如果我要遵循指南并与我的TensorFlow工作流(https://blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html)集成,那么您将无法访问权重变量,因为我们将不会像指南中所示的那样构建模型。我们只是用了层。当我们使用它作为TensorFlow的简化接口时,不需要编译。那么我们如何访问权重(变量)?
因为如果我们像指南一样使用TensorFlow,我们不调用 Model
或Compile
,而只是使用层来构建。
如果你谈论的是模型被定义为:
x = Dense(128, activation='relu')(img)
x = Dense(128, activation='relu')(x)
preds = Dense(10, activation='softmax')(x) # output layer with 10 units and a softmax activation
那么你是对的,你不能访问变量,但这是因为我们没有给层一个名字(我们只跟踪张量x
)。
如果你想访问变量,而使用类似的符号,你必须这样做:
l1 = Dense(128, activation='relu')
l2 = Dense(128, activation='relu')
out = Dense(10, activation='softmax')
preds = out(l2(l1(img)))
然后,您可以访问变量,例如l1
通过l1.weights
。
如果您对使用Sequential
时如何访问变量感兴趣,请使用:model.layers[i].weights
,其中i
是您感兴趣的层的索引。