Python Keras模型中权重和变量之间的区别是什么?

Python Keras模型中权重和变量之间的区别是什么?,python,tensorflow,keras,Python,Tensorflow,Keras,我注意到tf.keras.Models有两组相似的属性: 权重,变量 可训练权重,可训练变量 不可训练权重,不可训练变量 还有一些方法: 添加权重,添加变量 在我所研究的模型中,属性对的值是相同的,并且是您所期望的(适当的tf.Variables集合) 所以我的问题是:两者之间有什么区别?概念上的区别是什么?什么时候应该使用其中一种 这是TensorFlow 2.3.1。添加变量,相关位似乎是TensorFlow 1的遗留部分。从今天的主版本开始,add_variable是add_weight的

我注意到
tf.keras.Model
s有两组相似的属性:

权重
变量

可训练权重
可训练变量

不可训练权重
不可训练变量

还有一些方法:

添加权重
添加变量

在我所研究的模型中,属性对的值是相同的,并且是您所期望的(适当的
tf.Variable
s集合)

所以我的问题是:两者之间有什么区别?概念上的区别是什么?什么时候应该使用其中一种


这是TensorFlow 2.3.1。

添加变量
,相关位似乎是TensorFlow 1的遗留部分。从今天的主版本开始,
add_variable
add_weight
的别名,如果调用,将发出弃用警告

如果我们看一下,我们会发现
可训练的变量
不可训练的变量
是关于
可训练的权重
不可训练的权重

@property
@doc_controls.do_not_generate_docs
def trainable_variables(self):
  return self.trainable_weights

@property
@doc_controls.do_not_generate_docs
def non_trainable_variables(self):
  return self.non_trainable_weights
我相信这样做是为了一致性。在tensorflow代码库中,您可以发现许多与高API KERA无关的代码也具有这两个属性(
trainable\u variables
non\u trainable\u variables

然而,从keras存储库中查看代码,很明显,keras使用了
可训练权重
不可训练权重
来引用相同的概念。见