在以下代码中:
import tensorflow as tf
import numpy as np
with tf.Session():
input_features = tf.constant(np.reshape([2, 1, 1, 2], (1, 4)).astype(np.float32))
print(input_features)
weights = tf.constant(np.random.randn(4, 2).astype(np.float32))
output = tf.matmul(input_features, weights)
print("Input:")
print(input_features.eval())
print("Weights:")
print(weights.eval())
print("Output:")
print(output.eval())
当它调用print(weights.eval())
时,将计算权重。当它调用output.eval()
时,会重新计算权重,还是会使用之前调用的缓存值?
答案 0 :(得分:0)
weights
是常数张量,在运行此行时会得到一个值:
weights = tf.constant(np.random.randn(4, 2).astype(np.float32))
...而且这个值实际上存储在图表中,永远不会改变,就像input_features
一样。您可以评估weights
或任何依赖操作,并始终获得相同的结果。当然,Tensorflow会在会话中存储所有常量和变量的值,如果您愿意,可以将其称为缓存。
这里唯一的随机性是价值本身:np.random.randn(4, 2)
。每次运行脚本时,此数组都会有所不同(但如上所述,在脚本中将是相同的。)