收藏
回答

微信开发者工具小程序开发中使用TensorFlow.js初始化失败

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 需求 工具 稳定版 Stable Build 1.05.2111300 Windows 64 2.21.3

在初始化TensorFlow插件时,框架代码在获取离屏canvas的上下文时,配置了failIfMajorPerformanceCaveat为true,导致获取不到上下文。

在微信开发者工具的控制台中测试将failIfMajorPerformanceCaveat置为true时获取canvas上下文,结果返回null;在chrome浏览器中使用相同代码测试获取canvas上下文,可以正常返回。

该配置项意为“在一个系统性能低的环境是否创建该上下文的布尔值”。当前解决方法是在初始化之前先将该配置项置为false获取一次上下文,再传入plugin.configPlugin函数中进行初始化配置。建议将该配置项开放为用户可配置而非框架代码中的默认配置。

补充问题出现的流程:

1、新建一个小程序的项目;

2、使用npm初始化该项目,并执行npm install @tensorflow/tfjs-core @tensorflow/tfjs-converter @tensorflow/tfjs-backend-webgl fetch-wechat crypto-js安装依赖包;

3、执行构建npm;

4、在app.json中使用插件;

  "plugins": {
    "tfjsPlugin": {
      "version""0.2.0",
      "provider""wx6afed118d9e81df9"
    }
  }

5、在app.js中引入并初始化插件;

var fetchWechat = require('fetch-wechat');
var tf = require('@tensorflow/tfjs-core');
var webgl = require('@tensorflow/tfjs-backend-webgl');
var plugin = requirePlugin('tfjsPlugin');

App({
  onLaunch() {
    // let canvas = wx.createOffscreenCanvas();
    // canvas.getContext("webgl");
    plugin.configPlugin({
      // polyfill fetch function
      fetchFunc: fetchWechat.fetchFunc(),
      // inject tfjs runtime
      tf,
      // inject webgl backend
      webgl,
      // provide webgl canvas
      canvas: wx.createOffscreenCanvas()
    });
  }
})

6、编译运行项目,控制台报错;

补充复现问题的简单代码片段链接:https://developers.weixin.qq.com/s/l5CYrqmc71wE

最后一次编辑于  2022-01-19
回答关注问题邀请回答
收藏

1 个回答

  • 工号9527
    工号9527
    2022-01-19

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2022-01-19
    有用
    回复 8
    • Conquer365
      Conquer365
      2022-01-19
      你好,问题出现的流程已在提问中进行了补充,代码片段分享错误,原因:Error: 代码片段代码包大小上限为 1024 KB,当前代码包大小为 94247.86 KB。
      2022-01-19
      回复
    • 工号9527
      工号9527
      2022-01-19回复Conquer365
      你删掉一些不重要的
      2022-01-19
      回复
    • Conquer365
      Conquer365
      2022-01-19回复工号9527
      你好,复现问题的简单代码片段链接已在提问中进行了补充。代码片段链接:https://developers.weixin.qq.com/s/l5CYrqmc71wE
      2022-01-19
      回复
    • 工号9527
      工号9527
      2022-01-19回复Conquer365
      然后呢?
      2022-01-19
      回复
    • 工号9527
      工号9527
      2022-01-19回复Conquer365
      是不是你的显卡不支持webgl ?
      2022-01-19
      回复
    查看更多(3)
登录 后发表内容