访问Keras中的图层变量

时间:2016-10-28 17:29:27

标签: keras

如果我按照指南并与我的TensorFlow工作流程(https://blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html)集成,则您无法访问权重变量,因为我们不会将模型构建为在指南中显示。我们只是使用图层。当我们将它用作TensorFlow的简化接口时,无需编译。 我们如何访问权重(变量)?

因为如果我们像指南一样使用TensorFlow,我们不会调用 ModelCompile,而只是使用图层来构建。

1 个答案:

答案 0 :(得分:1)

如果您正在谈论模型定义为的部分:

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是您感兴趣的图层的索引。