3

我有使用 TensorflowJs Converter 转换的预训练 keras 模型。我正在尝试将它们加载到以下脚本中

(index.js)

const tf = require('@tensorflow/tfjs');

require('@tensorflow/tfjs-node');
global.fetch = require('node-fetch')

const model = tf.loadLayersModel(
     'model/model.json');

执行时出现以下错误node index.js

(node:28543) UnhandledPromiseRejectionWarning: Error: Request for model/decoder-model/model.json failed due to error: TypeError: Only absolute URLs are supported

(node:28543) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3)
(node:28543) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

我也试过这个

const model = tf.loadLayersModel(
     'https://storage.googleapis.com/tfjs-models/tfjs/iris_v1/model.json');

但在这里我得到

(node:28772) UnhandledPromiseRejectionWarning: Error: Found more than one (2) load handlers for URL 'https://storage.googleapis.com/tfjs-models/tfjs/iris_v1/model.json'

系统信息

节点 v10.15.3 和 TensorflowJs v1.0.1

4

2 回答 2

2

代替

const tf = require('@tensorflow/tfjs'); 

const tf = require('@tensorflow/tfjs-node');

并删除线

require('@tensorflow/tfjs-node');

然后,如果您从本地文件系统加载模型,请将“file://”添加到您提供给 loadLayersModel() 的参数的开头。

它应该工作

于 2019-03-14T23:56:22.253 回答
0

第一个错误很明显,它需要一个绝对 URL ( '/model/model.json'),但你给它一个相对URL ( 'model/model.json')。

第二个错误也很清楚,错误告诉您前一个抛出的错误没有被捕获(因此是Unhandled)。

最后一个请看 https://github.com/tensorflow/tfjs/issues/779https://github.com/tensorflow/tfjs/issues/622

我认为这是因为混合了 CUDA 和非 CUDA 的东西。检查你的packages.json第一个。

于 2019-03-14T12:13:05.510 回答