我只想将python模型转换为tensorflow.js模型,但保存为.pb后,我运行“ tensorflowjs_converter --input_format = tf_saved_model --output_format = tfjs_graph_model --signature_name = serving_default --saved_model_tags = serve ./saved_model ./web_model”,出现错误。
2019-03-20 23:07:05.970985:I tensorflow / core / grappler / devices.cc:53]合格GPU的数量(核心数> = 8):0(注意:TensorFlow未使用CUDA支持进行编译) 2019-03-20 23:07:05.978764:我tensorflow / core / grappler / clusters / single_machine.cc:359]开始新的会话 2019-03-20 23:07:05.985340:I tensorflow / core / platform / cpu_feature_guard.cc:142]您的CPU支持该TensorFlow二进制文件未编译为使用的指令:AVX2 2019-03-20 23:07:06.072370:E tensorflow / core / grappler / grappler_item_builder.cc:636]初始化节点变量/赋值在图中不存在 追溯(最近一次通话): 在OptimizeGraph中,文件“ d:\ anaconda3 \ lib \ site-packages \ tensorflow \ python \ grappler \ tf_optimizer.py”,第43行 详细,graph_id,状态) SystemError:未设置错误就返回NULL
在处理上述异常期间,发生了另一个异常:
回溯(最近通话最近): _run_module_as_main中的文件“ d:\ anaconda3 \ lib \ runpy.py”,第193行 “ 主要”,mod_spec) 文件“ d:\ anaconda3 \ lib \ runpy.py”,第85行,_run_code exec(代码,run_globals) 文件“ D:\ Anaconda3 \ Scripts \ tensorflowjs_converter.exe__main __。py”,第9行,在 主目录中的文件“ d:\ anaconda3 \ lib \ site-packages \ tensorflowjs \ converters \ converter.py”,第358行 strip_debug_ops = FLAGS.strip_debug_ops) 文件“ d:\ anaconda3 \ lib \ site-packages \ tensorflowjs \ converters \ tf_saved_model_conversion_v2.py”,第271行,在convert_tf_saved_model中 concrete_func) 文件“ d:\ anaconda3 \ lib \ site-packages \ tensorflow \ python \ framework \ convert_to_constants.py”,行140,位于convert_variables_to_constants_v2中 graph_def = _run_inline_graph_optimization(功能) _run_inline_graph_optimization中的文件“ d:\ anaconda3 \ lib \ site-packages \ tensorflow \ python \ framework \ convert_to_constants.py”,第59行 返回tf_optimizer.OptimizeGraph(config,meta_graph) 在OptimizeGraph中,文件“ d:\ anaconda3 \ lib \ site-packages \ tensorflow \ python \ grappler \ tf_optimizer.py”,第43行 详细,graph_id,状态) 退出中的文件“ d:\ anaconda3 \ lib \ site-packages \ tensorflow \ python \ framework \ errors_impl.py”,第548行 c_api.TF_GetCode(self.status.status)) tensorflow.python.framework.errors_impl.InvalidArgumentError:无法导入元图,请检查错误日志以获取更多信息。
这是我的代码。 tensorflow的版本是1.14.0(预览,因为我无法安装tf 2.0)
# coding=utf-8#
import tensorflow as tf
import numpy as np
x_data = [[0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0, 1.0]]
y_data = [[0.0], [1.0], [1.0], [0.0]]
x_test = [[0.0, 1.0], [1.0, 1.0]]
xs = tf.placeholder(tf.float32, [None, 2])
ys = tf.placeholder(tf.float32, [None, 1])
W1 = tf.Variable(tf.random_normal([2, 10]))
B1 = tf.Variable(tf.zeros([1, 10]) + 0.1)
out1 = tf.nn.relu(tf.matmul(xs, W1) + B1)
W2 = tf.Variable(tf.random_normal([10, 1]))
B2 = tf.Variable(tf.zeros([1, 1]) + 0.1)
prediction = tf.add(tf.matmul(out1, W2), B2, name="model")
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
for i in range(40):
sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))
re = sess.run(prediction, feed_dict={xs: x_test})
print(re)
for x in re:
if x[0] > 0.5:
print(1)
else:
print(0)
tf.saved_model.simple_save(sess, "./saved_model", inputs={"x": xs, }, outputs={"model": prediction, })
答案 0 :(得分:1)
最后,我放弃了,因为最新版本已删除了loadFrozenModel,并且支持很少。我尝试使用keras模型,并且有效。但是,我仍然希望有人能告诉我为什么我的tf模型无法转换为tfjs模型。
答案 1 :(得分:0)
只需添加
tf.enable_resource_variables()
初始化x_data
并使用此命令进行转换
tensorflowjs_converter --input_format=tf_saved_model --output_format=tfjs_graph_model ./saved_model ./web_model