看看这段代码(假设 Tensorflow 2.1 或 2.2):
import tensorflow as tf
inputs = tf.keras.Input([])
var = tf.Variable(3.0)
out = var*inputs
model = tf.keras.Model(inputs=inputs, outputs=out)
print(model.variables) # prints []
model.saved_vars = tf.Module()
model.saved_vars.var = var
print(model.saved_vars.variables) # prints (<tf.Variable 'Variable:0' shape=() dtype=float32, numpy=3.0>,)
print(model.variables) # prints []
为什么是model.variables
空?我希望包含var
. 据我了解tf.Module
,它可以用作名称范围,也可以用作tf.Variable
分配给其属性的记录。既然 atf.keras.Model
是 a tf.Module
,它应该递归地做同样的事情,不是吗?