【问题标题】:tensorflowjs-converter:Failed to import metagraph, check error log for more infotensorflowjs-converter:导入元图失败,请检查错误日志以获取更多信息
【发布时间】:2019-08-11 08:36:58
【问题描述】:

我只想将 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 而没有设置错误

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

Traceback(最近一次调用最后一次): _run_module_as_main 中的文件“d:\anaconda3\lib\runpy.py”,第 193 行 "ma​​in", mod_spec) _run_code 中的文件“d:\anaconda3\lib\runpy.py”,第 85 行 执行(代码,run_globals) 文件“D:\Anaconda3\Scripts\tensorflowjs_converter.exe__main__.py”,第 9 行,在 文件“d:\anaconda3\lib\site-packages\tensorflowjs\converters\converter.py”,第 358 行,在 main 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 具体函数) 文件“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) _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,状态) exit 中的文件“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, })

【问题讨论】:

    标签: tensorflow.js tensorflowjs-converter


    【解决方案1】:

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

    【讨论】:

    • 我也在纠结这个,我试试看能不能用keras模型
    【解决方案2】:

    只需添加

    tf.enable_resource_variables()

    在初始化x_data之前

    并使用此命令进行转换

    tensorflowjs_converter --input_format=tf_saved_model --output_format=tfjs_graph_model ./saved_model ./web_model
    

    【讨论】:

      猜你喜欢
      • 2018-10-13
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多