无法使用bundleResourceIO加载用于React Native的自定义TensorFlow.js模型

时间:2020-09-09 07:01:18

标签: reactjs react-native tensorflow tensorflow.js

我试图在React native中将自定义模型加载到tensorflow.js中,但是在尝试加载它时出现以下错误。

Unable to resolve "../model/group1-shard1of1.bin" from "screens/CameraView.js"

undefined Unable to resolve module `../model/group1-shard1of1.bin` from `screens/CameraView.js`: 
  const modelJSON = require("../model/model.json");
  const modelWeights = require("../model/group1-shard1of1.bin");

  useEffect(() => {
    (async () => {
      const { status } = await Camera.requestPermissionsAsync();
      setHasPermission(status === "granted");
    })();
    (async () => {
      try {
        const model = await tf.loadLayersModel(
          bundleResourceIO(modelJSON, modelWeights)
        );
        console.log("Model loaded");
      } catch (e) {
        console.log(e);
      }
    })();
    (async () => {
      await tf.ready();
      setTFReady(true);
    })();
    // console.log(isTFReady);
  }, []);

1 个答案:

答案 0 :(得分:0)

通过将带有以下代码的metro.config.js文件添加到项目目录的根目录来解决该问题

const { getDefaultConfig } = require('metro-config');
module.exports = (async () => {
  const defaultConfig = await getDefaultConfig();
  const { assetExts } = defaultConfig.resolver;
  return {
    resolver: {
      // Add bin to assetExts
      assetExts: [...assetExts, 'bin'],
    }
  };
})();