【问题标题】:Run importing TensorFlow graph fails for uninitialized variables对于未初始化的变量,运行导入 TensorFlow 图失败
【发布时间】:2016-11-30 04:05:53
【问题描述】:

我正在尝试使用javacpp-presets for TensorFlow 在 java 中运行 TensorFlow 训练。我使用tf.train.write_graph(sess.graph_def, '.', 'example.pb', as_text=False) 生成了一个 .pb 文件,如下所示。

import tensorflow as tf
import numpy as np

x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name='Weights')
biases = tf.Variable(tf.zeros([1]), name='biases')
y = Weights * x_data + biases
loss = tf.reduce_mean(tf.square(y - y_data)) #compute the loss
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss, name='train')
init = tf.global_variables_initializer()

with tf.Session() as sess:
   print(sess.run(Weights), sess.run(biases))
   tf.train.write_graph(sess.graph_def, '.', 'example.pb', as_text=False)

我得到了:

线程“main”java.lang.Exception 中的异常:尝试使用未初始化的值权重”

当我跑步时:

tensorflow.Status s = session.Run(new StringTensorPairVector(new String[] {}, new Tensor[] {}), new tensorflow.StringVector(), new tensorflow.StringVector("train"), outputs);  

加载图表后,tensorflow.ReadBinaryProto(Env.Default(), "./example.pb", def);

有没有javacpp-presets api可以做和init = tf.global_variables_initializer()一样的工作?
或者我可以用来初始化所有变量的任何 C++ TensorFlow api?

【问题讨论】:

    标签: tensorflow javacpp


    【解决方案1】:

    在您的 Python 程序中,inittf.global_variables_initializer() 的结果)是一个 tf.Operation,当传递给 sess.run() 时。如果您在构建 Python 图形时捕获了 init.name 的值,则可以在运行训练步骤之前将该名称传递给 Java 程序中的 session.Run()

    我不能 100% 确定 javacpp-presets 的 API 是什么样的,但我认为您可以这样做:

    tensorflow.Status s = session.Run(
        new StringTensorPairVector(new String[] {}, new Tensor[] {}),
        new tensorflow.StringVector(),
        new tensorflow.StringVector(value_of_init_dot_name),
        outputs);  
    

    ...其中value_of_init_dot_name 是您从Python 程序中获得的init.name 的值。

    【讨论】:

    • 非常感谢!我把它作为你的答案完全解决了。
    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多