繁体   English   中英

在 NodeJS 上运行 Frozen Tensorflow 模型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM