Javascript 在NodeJS上运行冻结Tensorflow模型
我不熟悉tensorflowjs(以及一般的js),但是我需要在它上面运行一个经过训练的模型。 目前,我将模型转换为json格式,但很难向其提供数据:Javascript 在NodeJS上运行冻结Tensorflow模型,javascript,python,node.js,tensorflow,tensorflow.js,Javascript,Python,Node.js,Tensorflow,Tensorflow.js,我不熟悉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 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();
但是我收到一个错误,说Conv2D op当前在CPU上支持NHWC张量格式。op的格式为:NCHW
据我所知,这是一个tfjs问题,所以我尝试创建一个float32数组并将其传递给模型,如下所示:
var f32array = new Float32Array(512);
model.predict([f32array, labels]);
但随后我看到一个错误,即model.execute(dict)中提供的dict['Gs/latents\u in']的数据类型必须是float32,但未定义
对于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
传递将不起作用,因为模型。predict
需要张量或张量数组
如错误所示:
Conv2D op目前在CPU上支持NHWC张量格式。op的格式为:NCHW
js中版本
1.6
的conv2D仅支持NHWC格式。您唯一能做的就是更改python中的模型,以便只使用NHWC格式。我想我必须这样做,谢谢您的回答