2017-04-20 118 views
0

我正在跟蹤cifar10示例代碼here 。而我用下面的代碼片段Tensorflow CIFAR10 get_variable未初始化

def _variable_on_cpu(name, shape, initializer): 
"""Helper to create a Variable stored on CPU memory. 
     Args: 
     name: name of the variable 
     shape: list of ints 
     initializer: initializer for Variable 

     Returns: 
     Variable Tensor 
     """ 
     with tf.device('/cpu:0'): 
      dtype = tf.float16 if FLAGS.use_fp16 else tf.float32 
      var = tf.get_variable(name, shape, initializer=initializer, dtype=dtype) 
return var 

變種似乎並沒有被初始化的一些問題(既不符合global_variables_initializer(),也不var.initializer .run()) 它只是運行完美。

但是下面的測試代碼會引發錯誤:

「FailedPreconditionError:試圖使用未初始化值測試/ X」

import tensorflow as tf 
with tf.variable_scope('test') as scope: 
    x = tf.get_variable('x', shape = [3, 4], initializer = tf.constant_initializer([0,1,2])) 
sess = tf.InteractiveSession() 
print(sess.run(x)) 

沒有人有任何想法?

回答

0

您在底部添加的代碼不起作用,因爲您尚未初始化變量。因此,只需添加初始化:

import tensorflow as tf 
with tf.variable_scope('test') as scope: 
    x = tf.get_variable('x', shape = [3, 4], initializer = tf.constant_initializer([0,1,2])) 
sess = tf.InteractiveSession() 
sess.run(tf.global_variables_initializer()) 
print(sess.run(x)) 
+0

那麼爲什麼上面的cifar10示例代碼片段工作? (看來「var」也沒有初始化。) – CYM

+0

@陳昱名,因爲它只是定義了一個var而沒有做任何事情。當你運行這個功能時,它很可能會抱怨 –