张量的值为什么会变化?

ling
# Using Python state
x = tf.zeros([10, 10])
x += 2  # This is equivalent to x = x + 2, which does not mutate the original
        # value of x
print(x)

x从0更改为2。它显示x = tf.zeros([10,10])的以下结果:

<tf.Tensor: id=266, shape=(10, 10), dtype=float32, numpy=
array([[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., 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., 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., 0., 0., 0., 0.]], dtype=float32)>

然后在执行后更改为以下内容:x + = 2

<tf.Tensor: id=263, shape=(10, 10), dtype=float32, numpy=
array([[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]], dtype=float32)>

为什么评论说“不会改变x的原始值”?

和摩尔多瓦

克里斯·希尔德(Chris Heald)是对的。最容易看到使用NumPy的区别:

import numpy as np

a = np.array(2)
b = a  # Set up an alias

a += 1  # NumPy operations are in-place - they mutate the array
print(b)  # Output: 3!

由于的ndarray__iadd__原位改变数组,因此对该数组的所有引用都会更新,因此代码为print 3在这方面,NumPy数组更像对象。

将此与Tensor不可变的TF进行比较(代码为TF 2):

import tensorflow as tf

a = tf.constant(2)
b = a  # Set up an alias

a += 1  # Tensor operations are not in-place - a new tensor is created
print(b)  # Output: 2

打印2,因为Tensor是不可变的。因此它们更像原始值。

这样就可以直接访问原始值-只需将其分配给其他变量(就像我对进行的操作b = a)。

描述此问题的另一种方法是使用列表:

l = [1]
l[0] = 2  # I can mutate the list...
l = [2]   # ... or I can create a new one

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么grepping PID会不断变化?

来自分类Dev

为什么浮点数中的精度问题会根据值而变化?

来自分类Dev

为什么javascript变量会反映ng-model的变化?

来自分类Dev

为什么最大堆栈深度会不断变化?

来自分类Dev

为什么更改采样频率后频谱也会变化?

来自分类Dev

CSS:为什么div块的高度会随内容而变化?

来自分类Dev

为什么CPU速度甚至会大量变化?

来自分类Dev

为什么一个数组中值的变化会影响另一个不参与操作的数组(具有完全相同的值)上的值?

来自分类Dev

为什么会产生值限制异常?

来自分类Dev

为什么memset会输入错误的值?

来自分类Dev

为什么lodash _.without()会更改_的值?

来自分类Dev

为什么此变量的值会更改?

来自分类Dev

为什么数组元素中的值发生变化?

来自分类Dev

为什么动态输入值未显示Angularjs的变化?

来自分类Dev

为什么Java中的值没有变化

来自分类Dev

为什么删除张量中的一维会导致 InvalidArgumentError: Matrix size-incompatible?

来自分类Dev

为什么线性调频频率的微小变化会导致快速傅立叶变换输出发生重大变化?

来自分类Dev

为什么我的ZenDesk宏会更新,但实际上没有变化?

来自分类Dev

为什么执行时间会根据数据类型而变化?

来自分类Dev

为什么子底板的状态变化会触发父窗口小部件的重建?

来自分类Dev

为什么切片的容量会变化?不应该一样吗?

来自分类Dev

为什么时间的输出格式会根据我的称呼方式而变化

来自分类Dev

为什么修改不相关的变量会导致链接列表发生变化?

来自分类Dev

为什么Parent类的实例变量的变化会反映在Child类中?

来自分类Dev

为什么PowerShell会切断列值?

来自分类Dev

为什么这个协程会永远生成None值?

来自分类Dev

为什么Oracle的PoolDataSource会忽略connectionProperties值?

来自分类Dev

为什么POST操作会丢失模型值?

来自分类Dev

调用JavaScript函数会更改参数的值。为什么?

Related 相关文章

  1. 1

    为什么grepping PID会不断变化?

  2. 2

    为什么浮点数中的精度问题会根据值而变化?

  3. 3

    为什么javascript变量会反映ng-model的变化?

  4. 4

    为什么最大堆栈深度会不断变化?

  5. 5

    为什么更改采样频率后频谱也会变化?

  6. 6

    CSS:为什么div块的高度会随内容而变化?

  7. 7

    为什么CPU速度甚至会大量变化?

  8. 8

    为什么一个数组中值的变化会影响另一个不参与操作的数组(具有完全相同的值)上的值?

  9. 9

    为什么会产生值限制异常?

  10. 10

    为什么memset会输入错误的值?

  11. 11

    为什么lodash _.without()会更改_的值?

  12. 12

    为什么此变量的值会更改?

  13. 13

    为什么数组元素中的值发生变化?

  14. 14

    为什么动态输入值未显示Angularjs的变化?

  15. 15

    为什么Java中的值没有变化

  16. 16

    为什么删除张量中的一维会导致 InvalidArgumentError: Matrix size-incompatible?

  17. 17

    为什么线性调频频率的微小变化会导致快速傅立叶变换输出发生重大变化?

  18. 18

    为什么我的ZenDesk宏会更新,但实际上没有变化?

  19. 19

    为什么执行时间会根据数据类型而变化?

  20. 20

    为什么子底板的状态变化会触发父窗口小部件的重建?

  21. 21

    为什么切片的容量会变化?不应该一样吗?

  22. 22

    为什么时间的输出格式会根据我的称呼方式而变化

  23. 23

    为什么修改不相关的变量会导致链接列表发生变化?

  24. 24

    为什么Parent类的实例变量的变化会反映在Child类中?

  25. 25

    为什么PowerShell会切断列值?

  26. 26

    为什么这个协程会永远生成None值?

  27. 27

    为什么Oracle的PoolDataSource会忽略connectionProperties值?

  28. 28

    为什么POST操作会丢失模型值?

  29. 29

    调用JavaScript函数会更改参数的值。为什么?

热门标签

归档