tensorflow是否缓存数据?

时间:2018-03-21 11:36:11

标签: python tensorflow constants

在以下代码中:

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()时,会重新计算权重,还是会使用之前调用的缓存值?

1 个答案:

答案 0 :(得分:0)

weights常数张量,在运行此行时会得到一个值:

weights = tf.constant(np.random.randn(4, 2).astype(np.float32))

...而且这个值实际上存储在图表中,永远不会改变,就像input_features一样。您可以评估weights或任何依赖操作,并始终获得相同的结果。当然,Tensorflow会在会话中存储所有常量和变量的值,如果您愿意,可以将其称为缓存。

这里唯一的随机性是价值本身:np.random.randn(4, 2)。每次运行脚本时,此数组都会有所不同(但如上所述,在脚本中将是相同的。)