前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当微信小程序遇上TensorFlow - 官方文档

当微信小程序遇上TensorFlow - 官方文档

作者头像
云水木石
发布2019-07-22 14:49:31
4.3K1
发布2019-07-22 14:49:31
举报
文章被收录于专栏:大龄程序员的人工智能之路

前一段时间为了在微信小程序中使用tensorflow.js,对tfjs-core代码做了一些修改,具体情况请参考我之前写的几篇文档:

后来,我厚着脸皮向tensorflow/tfjs-core项目提交了一个PR,不出意外,这个提交被拒了。当然谷歌的开发人员还是比较友好,给了我一个文档链接:

https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx6afed118d9e81df9

原来google有一份这样的开发指导文档,而且还是中文的,为啥没在tfjs的文档中列出?循着这份文档,我还找到了tensorflow项目组的tfjs微信小程序示例:

https://github.com/tensorflow/tfjs-wechat/tree/master/demo/mobilenet

这个项目说明也是中文的,看来微信小程序虽然红红火火,但真的还是仅限于中文世界。

就如同我所预想的,按照这个文档,一定不会那么顺利,实际做下来,也确实印证了这一点,下面就谈谈几个要点:

  1. 官方是采用微信小程序插件来增加tensorflow js支持的,要在微信小程序中使用tfjs插件,不能使用测试号,需要在小程序管理后台的“设置-第三方服务-插件管理”中添加插件。具体方法为: 开发者可登录小程序管理后台,通过 appid [wx6afed118d9e81df9] 查找插件并添加。本插件无需申请,添加后可直接使用。
  2. 直接导入github.com/tensorflow/tfjs-wechat/tree/master/demo/mobilenet中的代码,到了 点击微信开发工具中的‘构建npm’菜单 这一步,总是提示: 没有找到可以构建的 npm 包

尝试了很多次,也上网寻求帮助,始终无法解决。后来还是决定自己新建一个项目,然后在项目根目录执行:

代码语言:javascript
复制
$ npm init

在后续的提示里,一直按回车键,使用默认值:

代码语言:javascript
复制
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (wechat-tfjs-examples)
version: (1.0.0)
description:
entry point: (app.js)
test command:
git repository: (https://github.com/mogoweb/wechat-tfjs-examples)
keywords:
author:
license: (ISC)
About to write to D:\work\ai\wechat-tfjs-examples\package.json:

{
  "name": "wechat-tfjs-examples",
  "version": "1.0.0",
  "description": "微信小程序中使用TensorFlow js的示例代码,pages下面每个目录一个示例。",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/mogoweb/wechat-tfjs-examples.git"
  },
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/mogoweb/wechat-tfjs-examples/issues"
  },
  "homepage": "https://github.com/mogoweb/wechat-tfjs-examples#readme"
}

Is this OK? (yes)

在项目下多了package.json文件,往该文件中添加:

代码语言:javascript
复制
  "devDependencies": {
    "miniprogram-api-typings": "^2.6.5-2"
  },
  "dependencies": {
    "@tensorflow/tfjs-core": "1.2.2",
    "@tensorflow/tfjs-converter": "1.2.2",
    "@tensorflow/tfjs-layers": "1.2.2",
    "fetch-wechat": "0.0.3"
  }

接着执行:

代码语言:javascript
复制
$ npm install

再点击开发工具中的 构建npm ,就可以继续下去。这时可能会弹出提示:

代码语言:javascript
复制
未找到npm包入口文件

忽略之。

3. TensorFlow.js有一个联合包 - @tensorflow/tfjs,包含了四个分npm包:

tfjs-core: 基础包 tfjs-converter: GraphModel 导入和执行包 tfjs-layers: LayersModel 创建,导入和执行包 tfjs-data:数据流工具包 对于小程序而言,由于有2M的app大小限制,不建议直接使用联合包,而是按照需求加载分包。

  • 如果小程序只需要导入和运行GraphModel模型的的话,建议只加入tfjs-core和tfjs-converter包。这样可以尽量减少导入包的大小。
  • 如果需要创建,导入或训练LayersModel模型,需要再加入 tfjs-layers包。

在我的示例代码中,使用到tfjs-core和tfjs-layers包,导入代码如下:

代码语言:javascript
复制
import * as tf from '@tensorflow/tfjs-layers';
import * as tfc from '@tensorflow/tfjs-core';
小结

使用tensorflow的官方方法,可以跟上tfjs的最新进展,可以在第一时间上使用最新特性,推荐使用这种方法。但我之前的尝试也不是毫无价值,tfjs官方没有增加对模型本地缓存的支持,每次都需要从网络加载模型,当然不排除以后tfjs官方也会添加这样的特性。

我把调试好的tensorflow示例放在github上,请访问:

https://github.com/mogoweb/wechat-tfjs-examples

然后切换到 official 分支。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云水木石 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小结
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档