如何评估变量?

How to evaluate a Variable?

我正在尝试获取张量的值。

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

上面提到的所有方法我都试过了,好像还是不行。

提前致谢

很快:

您不能在会话外评估任何张量变量,您必须在 session,

内进行

为什么不能:

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

如何运行图表:

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

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