python - Keras 模型中的权重和变量有什​​么区别?

标签 python tensorflow keras

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

权重变量
trainable_weights, trainable_variables
non_trainable_weights, non_trainable_variables

还有方法:

add_weightadd_variable

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

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

这是 TensorFlow 2.3.1。

最佳答案

如果我们看the code of tf.keras.layers.Layer ,我们看到 trainable_variablesnon_trainable_variablestrainable_weightsnon_trainable_weights

的简单 setter/getter
@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 keras 无关的代码也具有这两个属性(trainable_variablesnon_trainable_variables)。

但是,查看 keras 存储库中的代码,很明显 keras 使用 trainable_weightsnon_trainable_weights 来引用相同的概念。查看Layer class in keras 2.2

关于python - Keras 模型中的权重和变量有什​​么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64915218/

相关文章:

python - OptKeras (Keras Optuna Wrapper) - 在我自己的类中使用 optkeras,AttributeError : type object 'FrozenTrial' has no attribute '_field_types'

python - 在Azure ML上开始训练模型

machine-learning - CNN学习停滞

tensorflow - Tensorflow r.1.1 中的 TrainingHelper 和 GreedyEmbeddingHelper 有什么区别(预测结果不同)?

python - 调整 Keras 中隐藏层的数量

python - 自动更新证书时,centos 7 的 crontab 中的 python 代码有什么用?

python - 我如何在 Python 2 中折叠字符串?

python - 在 PostgreSQL 上使用 SQLAlchemy 的当前查询中使用 COUNT(*) OVER()

python - 使用窗口函数在 Postgres 上使用 SqlAlchemy 限制查询

neural-network - 在 Tensorflow 中,我应该使用什么样的神经网络?