gpt4 book ai didi

keras - 在 Keras 中按名称权重

转载 作者:行者123 更新时间:2023-12-04 17:16:37 26 4
gpt4 key购买 nike

使用 Keras 训练模型后,我可以使用以下方法获取权重数组列表:

myModel.get_weights() 

或者
myLayer.get_weights()

我想知道每个权重数组对应的名称。我知道如何通过保存模型和解析 HDF5 文件来间接执行此操作,但肯定必须有直接的方法来完成此操作?

最佳答案

功能 get_weights返回一个 numpy 数组列表,其中没有名称信息。

至于Model.get_weights() ,这只是 Layer.get_weights() 的串联对于每个 [flattened] 层。

然而,Layer.weights直接访问后端变量,这些,是的,可能有一个名字。解决方案是遍历每一层的每个权重,检索其 name属性。

VGG16 的示例:

from keras.applications.vgg16 import VGG16


model = VGG16()

names = [weight.name for layer in model.layers for weight in layer.weights]
weights = model.get_weights()

for name, weight in zip(names, weights):
print(name, weight.shape)

输出:
block1_conv1_W_6:0 (3, 3, 3, 64)
block1_conv1_b_6:0 (64,)
block1_conv2_W_6:0 (3, 3, 64, 64)
block1_conv2_b_6:0 (64,)
block2_conv1_W_6:0 (3, 3, 64, 128)
block2_conv1_b_6:0 (128,)
block2_conv2_W_6:0 (3, 3, 128, 128)
block2_conv2_b_6:0 (128,)
block3_conv1_W_6:0 (3, 3, 128, 256)
block3_conv1_b_6:0 (256,)
block3_conv2_W_6:0 (3, 3, 256, 256)
block3_conv2_b_6:0 (256,)
block3_conv3_W_6:0 (3, 3, 256, 256)
block3_conv3_b_6:0 (256,)
block4_conv1_W_6:0 (3, 3, 256, 512)
block4_conv1_b_6:0 (512,)
block4_conv2_W_6:0 (3, 3, 512, 512)
block4_conv2_b_6:0 (512,)
block4_conv3_W_6:0 (3, 3, 512, 512)
block4_conv3_b_6:0 (512,)
block5_conv1_W_6:0 (3, 3, 512, 512)
block5_conv1_b_6:0 (512,)
block5_conv2_W_6:0 (3, 3, 512, 512)
block5_conv2_b_6:0 (512,)
block5_conv3_W_6:0 (3, 3, 512, 512)
block5_conv3_b_6:0 (512,)
fc1_W_6:0 (25088, 4096)
fc1_b_6:0 (4096,)
fc2_W_6:0 (4096, 4096)
fc2_b_6:0 (4096,)
predictions_W_6:0 (4096, 1000)
predictions_b_6:0 (1000,)

关于keras - 在 Keras 中按名称权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40444083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com