当微信小程序遇上TensorFlow - tensorflow.js篇
在上一篇推送《?重磅好消息!TensorFlow开始支持微信小程序?》中,介绍了TensorFlow开始支持微信小程序平台,并计划将我之前开发的人工智能微信小程序?识狗君?使用tensorflow js改写。 这个端午节,趁着放假,空余时间比较多,开始研究微信小程序中如何使用tensorflow.js。 在写下上一篇推送后,我简单尝试过在微信小程序中使用tensorflow.js,发现直接使用还是存在一点问题,所以本次的目标是走通简单的流程:加载预训练模型mobilenet,可以用来识别图片所属分类。 示例代码位于: https://github.com/mogoweb/aidog 请切换到tfjs分支。运行起来,效果是这样的: 嗯,示例是简单了一点,但所有使用tensorflow js的关键步骤都包括。 下面就简要描述一下我所遇到的坑及解决之道: loadLayersModel无法加载模型使用tfjs定义模型,训练模型并进行预测都没问题,但是使用?loadLayersModel?加载预训练模型,却出现如下错误: Uncaught (in promise) Error: Unable to find the fetch() method. Please add your own fetch() function to the global namespace.
为什么会出现这个问题呢,原来tfjs-core为了可移植性,平台相关的操作,由各平台自行实现。从网络上获取数据就是这样的平台相关操作,浏览器、Node各有自己的实现方法。浏览器的实现依赖于fetch API,而微信小程序上,非常遗憾的看到了一条更新日志: 微信小程序中,网络请求可以通过?wx.request?实现,问题是如何实现全局的fetch函数呢?这可难倒了我。在网上搜索的时候,发现了一个项目: https://github.com/HunterXuan/wx-tfjs-core.git
原来这哥们早就研究过将tfjs移植倒微信小程序平台,写了几篇博客,值得看一看。参考了他的修改,我也完成了tfjs-core的改造,参考我在GitHub上建的项目: 我的修改有点不同,新定义了PlatformMP,主要是考虑到微信小程序和普通浏览器还有一些差异,以后存在差异的代码都放到PlatformMP里面实现。
|
- jquery带有索引按钮且自动轮播切换特效代码分享
- html – 使所有图像在引导程序中以相同的高度显示
- html – CSS Sprites – 仅使用一个图像作为元素的一部分的
- sublimetext2 – Sublime Text 2上分散自由模式的文件选项卡
- .net – 嵌套的app.config(web.config)文件
- Web服务 – SharePoint List.getListItems WebService以递归
- 表单 – symfony2形式具有参数的querybuilder
- html – 导入未在github页面中应用的Google API字体
- html – 在DOM中是节点ids的情况敏感?
- js内存泄露的几种情况详细探讨