发布于2022-11-28 11:35 阅读(1034) 评论(0) 点赞(10) 收藏(5)
我正在尝试在 Tensorflow.js 中加载基于 mobilen 的 keras 模型。遗憾的是,这不起作用我使用以下 python 代码生成了模型
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np
import tensorflowjs as tfjs
input_shape = 224,224 #sorry of all lowercase
num_classes = 2
mobile_net = tf.keras.applications.MobileNetV2(
input_shape=input_shape+(3,),
alpha=1.0,
include_top=False,
weights="imagenet",
input_tensor=None,
pooling=None,
classes=2,
classifier_activation="softmax"
)
model = keras.Sequential(
[
keras.Input(shape=input_shape+(3,)),
layers.Rescaling(1./255),
mobile_net,
layers.Flatten(),
layers.Dense(num_classes, activation="softmax")
]
)
model.build((None,)+input_shape+(3,))
tfjs.converters.save_keras_model(model,'./model.json')
print(model.summary())
之后我尝试使用以下命令在 node.js REPL 中加载模型
const tf = require('@tensorflow/tfjs')
async function predict(){
const model = await tf.loadLayersModel('file:///./model.json');
}
predict()
但是我收到错误消息。
Uncaught TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:14294:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
cause: Error: not implemented... yet...
at makeNetworkError (node:internal/deps/undici/undici:6789:35)
at schemeFetch (node:internal/deps/undici/undici:13774:18)
at node:internal/deps/undici/undici:13654:26
at mainFetch (node:internal/deps/undici/undici:13671:11)
at fetching (node:internal/deps/undici/undici:13628:7)
at fetch2 (node:internal/deps/undici/undici:13506:20)
at Object.fetch (node:internal/deps/undici/undici:14292:18)
at fetch (node:internal/process/pre_execution:238:25)
at PlatformNode.fetch (/Users/z003cyub/Documents/projects/FY2022/aufsteller/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:7542:33)
at HTTPRequest.<anonymous> (/Users/z003cyub/Documents/projects/FY2022/aufsteller/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:8406:55) {
[cause]: undefined
我想把它归咎于模型结构,但是,我用一个非常简单的模型得到了同样的错误
model2 = keras.Sequential(
[
keras.Input(shape=input_shape+(3,)),
layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
layers.Dropout(0.5),
layers.Dense(num_classes, activation="softmax"),
]
)
不是层或模型问题,更多的是nodejs
问题。最新版本的 node define global fetch
,但实现仍不完整,缺乏对file://
. 并且tfjs将使用全局获取(如果已定义)。尝试使用node --no-experimental-fetch
so global fetch
is not defined 并且tfjs将改用内部方法。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/1862917/3446b37dcb1502dcd468/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!