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