如何评估变量?

时间:2017-04-23 13:16:37

标签: tensorflow tflearn

我试图获得张量的值。

# 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)]]

我尝试了所有方法,但它似乎无法发挥作用。

提前致谢

1 个答案:

答案 0 :(得分:0)

不久:

您无法评估会话之外的任何张量变量,您必须在session内进行评估,

为什么不能:

为了理解为什么我们不能这样做,首先我们应该在tensorflow的背后发生什么,因为tensorflow中的每个东西都是图的节点,当我们定义变量并为它们赋值时,实际上我们正在设计图形,并且在运行图形之前不会分配值。

如何运行图表:

会话执行图表,考虑我们在张量流中设计网络时的代码块,会话之前的所有内容,如蓝图和此tf.session as sess行之后,如建筑工地,因此您只能评估(eval() )会议内的张量。换句话说,图形定义了操作,操作仅在会话内执行。

希望这很有用。有关更多信息,请阅读this