Python 如何从keras模型中获取权重?

Python 如何从keras模型中获取权重?,python,tensorflow,keras,Python,Tensorflow,Keras,我正在尝试为MNIST数据集构建一个两层神经网络,我想从我的模型中获取权重 我在她身上发现了一个类似的问题我试了一下 model.get_weights() 但是当我检查len(model.get_weights())时,它返回了11个值,难道它不应该返回3个权重吗?我甚至消除了偏见 model = Sequential() model.add(Flatten(input_shape = (28, 28))) model.add(Dense(512, activation='relu', ke

我正在尝试为MNIST数据集构建一个两层神经网络,我想从我的模型中获取权重

我在她身上发现了一个类似的问题我试了一下

model.get_weights()
但是当我检查
len(model.get_weights())
时,它返回了11个值,难道它不应该返回3个权重吗?我甚至消除了偏见

model = Sequential()
model.add(Flatten(input_shape = (28, 28)))
model.add(Dense(512, activation='relu', kernel_initializer='he_normal', use_bias=False,))
model.add(BatchNormalization())
model.add(Dropout(0.3))
model.add(Dense(128, activation='relu', kernel_initializer='he_normal', use_bias=False,))
model.add(BatchNormalization())
model.add(Dropout(0.1))
model.add(Dense(10, activation='relu', kernel_initializer='he_normal', use_bias=False,))

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

result = model.fit(x_train, y_train, validation_split=0.25, epochs=10, 
                   batch_size=128, verbose=1)

要获取特定层的权重,可以使用其名称检索该层,并在其上调用
get_weights
(如its中所述)

例如:

model.get_layer('dense').get_weights()

您可以浏览模型的
,并检索其名称和权重:

{layer.name: layer.get_weights() for layer in model.layers}

你可以得到每一层的权重。你从哪里得到3?@cs95什么算一层?那怎么可能是11点?我只有3个致密层,对吗?我是神经网络的新手。在中定义的任何东西都是一个层。基本上,任何可以配置权重或参数的东西都是一个层。可能activation='relu'算作一个单独的层。或者有其他权重对应于优化者或损失。我对TensorFlow keras API不是很熟悉,而是应该迭代模型中的每一层,分别获得每一层的权重。
{layer.name: layer.get_weights() for layer in model.layers}