Python tf的常数是多少?

Python tf的常数是多少?,python,tensorflow,tensorflow2.0,Python,Tensorflow,Tensorflow2.0,根据其他StackOverFlow问题,您无法更改tf.constant,但当我这样做时,它运行得非常完美: >>>c = tf.constant([2]) >>>c += 1 >>>print(c) [3] 为什么会这样?原来的c是恒定不变的。通过创建一个与c同名的新张量,该张量等于c加1的旧值,从某种意义上说,它仍然是一个常量,不能赋值给它。运行c+=1只需更改c指向like的对象c=c+1 c = tf.constant(2) pri

根据其他StackOverFlow问题,您无法更改
tf.constant
,但当我这样做时,它运行得非常完美:

>>>c = tf.constant([2])
>>>c += 1
>>>print(c)
[3]

为什么会这样?

原来的
c
是恒定不变的。通过创建一个与
c
同名的新张量,该张量等于
c
1
的旧值,从某种意义上说,它仍然是一个常量,不能
赋值给它。运行
c+=1
只需更改
c
指向like的对象
c=c+1

c = tf.constant(2)
print(id(c)) # "Address" is 140481630446312 (for my run)
c += 1
print(id(c)) # "Address" is different
但每次都失败:
c.assign(2)


这不是Tensorflow的限制,而是Python本身的限制。因为它没有被编译,所以我们不能检查常量。现在,您最好使用类型提示(Python3.6+)向IDE和可选的静态类型检查器表明您不希望重新分配变量

常量被视为数学意义上的常量(与需要查找或优化的变量相反),而不是信息意义上的常量。它不是一个
常量int
,或者别的什么,如果你懂C语言的话。