[英]Running Frozen Tensorflow model on NodeJS
我是 tensorflowjs(以及一般的 js)的新手,但是我需要在它上面运行一个训练有素的模型。 目前我将模型转换为 json 格式,但很难向它提供数据:
const tf = require('@tensorflow/tfjs')
const tfn = require('@tensorflow/tfjs-node-gpu')
async function start() {
const handler = tfn.io.fileSystem("./model/model.json");
const model = await tf.loadGraphModel(handler);
let latents = tf.randomNormal([1,512], 'float32');
let labels = tf.zeros([1, 0]);
model.predict([latents, labels]);
}
start();
但是我收到一条错误消息,说The Conv2D op currently supports NHWC tensor format on the CPU. The op was given the format: NCHW
The Conv2D op currently supports NHWC tensor format on the CPU. The op was given the format: NCHW
所以据我所知,这是一个 tfjs 问题,所以我尝试创建一个 float32 数组并将其传递给模型,如下所示:
var f32array = new Float32Array(512);
model.predict([f32array, labels]);
但是后来我看到一个错误,说the dtype of dict['Gs/latents_in'] provided in model.execute(dict) must be float32, but was undefined
使用 python,我使用以下代码运行推理:
graph = load_graph("dash/frozen_model.pb")
x = graph.get_tensor_by_name('prefix/Gs/latents_in:0')
x2 = graph.get_tensor_by_name('prefix/Gs/labels_in:0')
y = graph.get_tensor_by_name('prefix/Gs/images_out:0')
with tf.Session(graph=graph, config = config) as sess:
while True:
start_time = time.time()
latents = np.random.randn(1, 512).astype(np.float32)
labels = np.zeros([latents.shape[0], 0], np.float32)
y_out = sess.run(y, feed_dict = { x: latents, x2: labels})
将不胜感激任何帮助
将数据作为Float32Array
传递将不起作用,因为model.predict
需要张量或张量数组。
如错误所示:
Conv2D op 目前在 CPU 上支持 NHWC 张量格式。 op 的格式为:NCHW
js 中1.6
版的 conv2D 仅支持格式 NHWC。 您唯一能做的就是在 python 中更改模型,以便仅使用 NHWC 格式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.