tensorflow:如何分配更新的 numpy
tensorflow: how to assign an updated numpy
我是 tensorflow 的新手,我正在尝试了解它的行为;我正在尝试定义会话范围之外的所有操作,以优化计算时间。
在以下代码中:
import tensorflow as tf
import numpy as np
Z_tensor = tf.Variable(np.float32( np.zeros((1, 10)) ), name="Z_tensor")
Z_np = np.zeros((1,10))
update_Z = tf.assign(Z_tensor, Z_np)
Z_np[0][2:4] = 4
with tf.Session() as sess:
sess.run(Z_tensor.initializer)
print(Z_tensor.eval())
print(update_Z.eval(session=sess))
我得到了输出:
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
相反,我期望输出:
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[0. 0. 4. 4. 0. 0. 0. 0. 0. 0.]]
似乎Z_np
数组在赋值操作中没有更新,我不明白为什么。
不操作
update_Z = tf.assign(Z_tensor, Z_np)
用Z_np
做一个link?
当您使用 tf.assign 时,它需要一个张量作为第二个参数。因为您提供了一个 Numpy 数组,它会自动将其提升为一个 CONSTANT 张量,并在那一刻将其放置在图中。因此,您对 Numpy 数组所做的任何更改都不会对 TensorFlow 图产生任何影响。为了获得所需的功能,您应该使用占位符:
Z_placeholder = tf.placeholder(tf.float32, Z_np.shape)
with tf.Session() as sess:
sess.run(Z_tensor.initializer)
print(Z_tensor.eval(feed_dict={Z_placeholder: Z_np}, session=sess))
Z_np[0][2:4] = 4
print(Z_tensor.eval(feed_dict={Z_placeholder: Z_np}, session=sess))
我是 tensorflow 的新手,我正在尝试了解它的行为;我正在尝试定义会话范围之外的所有操作,以优化计算时间。 在以下代码中:
import tensorflow as tf
import numpy as np
Z_tensor = tf.Variable(np.float32( np.zeros((1, 10)) ), name="Z_tensor")
Z_np = np.zeros((1,10))
update_Z = tf.assign(Z_tensor, Z_np)
Z_np[0][2:4] = 4
with tf.Session() as sess:
sess.run(Z_tensor.initializer)
print(Z_tensor.eval())
print(update_Z.eval(session=sess))
我得到了输出:
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
相反,我期望输出:
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[0. 0. 4. 4. 0. 0. 0. 0. 0. 0.]]
似乎Z_np
数组在赋值操作中没有更新,我不明白为什么。
不操作
update_Z = tf.assign(Z_tensor, Z_np)
用Z_np
做一个link?
当您使用 tf.assign 时,它需要一个张量作为第二个参数。因为您提供了一个 Numpy 数组,它会自动将其提升为一个 CONSTANT 张量,并在那一刻将其放置在图中。因此,您对 Numpy 数组所做的任何更改都不会对 TensorFlow 图产生任何影响。为了获得所需的功能,您应该使用占位符:
Z_placeholder = tf.placeholder(tf.float32, Z_np.shape)
with tf.Session() as sess:
sess.run(Z_tensor.initializer)
print(Z_tensor.eval(feed_dict={Z_placeholder: Z_np}, session=sess))
Z_np[0][2:4] = 4
print(Z_tensor.eval(feed_dict={Z_placeholder: Z_np}, session=sess))