0

我只想将 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: I 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] 初始化节点变量/分配不存在于图回溯(最近一次调用最后一次):文件“d:\anaconda3\lib\site-packages\tensorflow\python\grappler\tf_optimizer.py”,第 43 行,在 OptimizeGraph 详细,graph_id,状态) SystemError:返回 NULL 而不设置一个错误

在处理上述异常的过程中,又出现了一个异常:

Traceback(最近一次调用最后一次):文件“d:\anaconda3\lib\runpy.py”,第 193 行,在 _run_module_as_main“ main ”中", mod_spec) 文件 "d:\anaconda3\lib\runpy.py",第 85 行,在 _run_code exec(code, 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 混凝土_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(func) 文件“d: \anaconda3\lib\site-packages\tensorflow\python\framework\convert_to_constants.py”,第 59 行,在 _run_inline_graph_optimization 返回 tf_optimizer.OptimizeGraph(config, meta_graph) 文件“d:\anaconda3\lib\site-packages\tensorflow\python\grappler\tf_optimizer.py”,第 43 行,在 OptimizeGraph 详细,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, })
4

2 回答 2

1

最后还是放弃了,因为最新版本去掉了loadFrozenModel,支持的很少。我尝试使用 keras 模型并且它有效。但是,我仍然希望有人告诉我为什么我的 tf 模型无法转换为 tfjs 模型。

于 2019-03-24T01:25:45.640 回答
0

只需添加

tf.enable_resource_variables()

在初始化之前x_data

并使用此命令进行转换

tensorflowjs_converter --input_format=tf_saved_model --output_format=tfjs_graph_model ./saved_model ./web_model
于 2019-05-02T10:06:26.307 回答