tensorflow尝试在类中使用未初始化的值W.

时间:2017-10-01 15:56:22

标签: python oop machine-learning tensorflow deep-learning

作为我的问题,我定义了一个类。在 init 中,我新增了一些tf值。并在主脚本中使用init global,init local.Even。

class DNN():
    def __init__(self):
        kernel_shape = [3,3]
        self.c11w = tf.Variable(tf.truncated_normal(kernel_shape + [3, 64], stddev=0.1), name = 'W'))
        with tf.Session() as sess:
            sess.run(tf.global_variables_initializer())
            sess.run(tf.local_variables_initializer())

喜欢这样。并且没有出现错误。所以我打电话给tf.report_uninitialized_variables(),只是空着。

所以,我想知道为什么以及如何,非常感谢。

1 个答案:

答案 0 :(得分:2)

在TF中,变量值仅存在于会话中。关闭会话后,不再有任何值,因此在当前代码中,您可以在构造函数中创建变量,初始化它们,然后丢弃它们。

在python中将TF集成到OO代码的典型模式将属于以下几行:

class MLobject():
  def __init__(self):
    self._graph = tf.Graph() # separate graph per instance
    with self._graph.as_default():
      variable_1 = ....
      ...
      self._initialiser = tf.global_variables_initializer()
    self._session = tf.Session(graph=self._graph) # store session in a field
    self._graph.finalize() # For safety, this should not be modified anymore

  def fit(self, X, y):
    self._session.run(self._initialiser)
    ... # execute training using self._session