Python TensorFlow中的张量是如何不变的?

Python TensorFlow中的张量是如何不变的?,python,tensorflow,Python,Tensorflow,我阅读了TensorFlow文档中的以下句子: 除了tf.Variable,张量的值是不可变的, 这意味着,在单个执行的上下文中,仅使用张量 只有一个值。然而,计算同一张量两次可以 返回不同的值;例如,张量可以是 从磁盘读取数据,或生成随机数 有人能详细说明一下张量的“不变”方面吗 什么是“不变性的范围”,因为两次计算张量可能会得到不同的结果 “单个执行的上下文”是什么意思 张量不同于变量,可以比作数学方程 当你说张量等于2+2时,它的值实际上不是4,是计算指令导致了2+2的值,当你启动一个会话

我阅读了TensorFlow文档中的以下句子:

除了tf.Variable,张量的值是不可变的, 这意味着,在单个执行的上下文中,仅使用张量 只有一个值。然而,计算同一张量两次可以 返回不同的值;例如,张量可以是 从磁盘读取数据,或生成随机数

有人能详细说明一下张量的“不变”方面吗

  • 什么是“不变性的范围”,因为两次计算张量可能会得到不同的结果
  • “单个执行的上下文”是什么意思

  • 张量不同于变量,可以比作数学方程

    当你说张量等于2+2时,它的值实际上不是4,是计算指令导致了2+2的值,当你启动一个会话并执行它时,TensorFlow运行返回2+2值所需的计算,并给出输出。由于计算中使用的是张量,而不是结果,所以张量是不变的

    现在回答您的问题:

  • 通过说张量可以用不同的值来计算,这意味着如果你说一个张量等于一个随机数,当你运行它不同的时间,你会有不同的值(因为方程本身是随机的),但是张量本身的值,如前所述,不是这个值,是导致它的步骤(在本例中为随机公式)

  • 单个执行的上下文意味着当您运行一个张量时,它将只输出一个值。考虑执行一个张量,比如应用我提到的方程。如果我说一个张量等于random+1,当你执行一次张量时,它会返回一个随机值+1,没有别的。但由于张量包含随机输出,如果您多次运行它,很可能会得到不同的值


  • 很好的解释。谢谢更确切地说,张量的定义是不变的,也就是说,如果张量定义了一个方程x+y,它的值就是这个方程,这个方程是不变的。然而,当计算这个张量时,你可能会得到基于x和y的不同值?确切地说,当你建立一个张量时,TensorFlow基本上会建立一个数学模型来计算你想要的输出,因此,它是不变性的,因为张量本身的值不是你设置的结果,而是“为了输出用户告诉我的结果,我需要计算什么,如果您要求张量计算任意随机因子,多次执行可能会产生多个值,即使张量本身的值相同。为了更好地可视化,您可以尝试设置一个张量并简单地打印它,您会注意到您不会得到预期的值,您将看到对张量对象的引用。如果你想要它的结果,你需要打开一个会话并调用你的_tensor.run,在这一点上,它的计算将被实际执行并显示结果。它是一个非常快速的库的原因之一,因为代码不会得到不必要的执行。希望它能帮助您理解它背后的概念!它确实有用!谢谢!