2017-04-23 142 views
0

我想要得到张量的值。打印出来的如何评估变量?

# First Layer 
encoder_layer1 = tflearn.fully_connected(x,41,activation='relu',bias=True) 
layer1_weights = encoder_layer1.W 
layer1_bias = encoder_layer1.b 

结果是:

The layer 1 weights are: <tf.Variable 'FullyConnected/W:0' shape=(41, 41) dtype=float32_ref> 

即使eval()函数似乎不工作。它会抛出一个错误

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value FullyConnected/W 
    [[Node: _send_FullyConnected/W_0 = _Send[T=DT_FLOAT, client_terminated=true, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/cpu:0", send_device_incarnation=-6055748491062458677, tensor_name="FullyConnected/W:0", _device="/job:localhost/replica:0/task:0/cpu:0"](FullyConnected/W)]] 

我试过所有的方法提出,但它似乎并没有工作。

在此先感谢

+0

[如何在TensorFlow中打印张量对象的值?](http://stackoverflow.com/questions/33633370/how-to-print-the-value-of-张量 - 张量中的物体) –

+0

问题已解决!感谢您指出 –

回答

0

不久:

你不能评价任何变量张会话之外,你必须做它session内,

为什么不能:

为了理解为什么我们不能这样做,首先我们现在应该知道张量流的背后是什么,因为张量流中的每一件事都是图的一个节点,当我们定义变量并为它们赋值时,实际上我们正在设计在我们运行图之前,图和值不会被分配。

如何运行图:

会话执行的图形,考虑代码块,当我们在tensorflow像蓝图,这tf.session as sess行后会话之前设计的网络,一切都像施工现场,所以你只能评估(eval())会议内的张量。换句话说,图定义了操作,操作只在会话内执行。

希望这是有用的。欲了解更多信息,请阅读this

+0

我的训练师功能中有一个会话,我在'with trainer.session.as_default()'中运行eval(),然后我得到第二个错误 –

+1

@WiLL_K,错误状态很清楚:您先必须初始化变量 – dv3

+0

我已经手动初始化变量,我解决了问题,只是tflean和tensorflow无法识别'trainer.session.as_default()',我不得不声明会话内部'eval(session = trainer.session)''。问题解决了。我认为当我用更多的指令集来构建它时,我已经搞砸了。 –