gpt4 book ai didi

machine-learning - 如何在 Keras 上仅加载特定权重

转载 作者:行者123 更新时间:2023-11-30 08:21:32 25 4
gpt4 key购买 nike

我有一个经过训练的模型,我已导出权重并希望部分加载到另一个模型中。我的模型是使用 TensorFlow 作为后端在 Keras 中构建的。

现在我正在做如下:

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=input_shape, trainable=False))
model.add(Activation('relu', trainable=False))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3), trainable=False))
model.add(Activation('relu', trainable=False))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3), trainable=True))
model.add(Activation('relu', trainable=True))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])


model.load_weights("image_500.h5")
model.pop()
model.pop()
model.pop()
model.pop()
model.pop()
model.pop()


model.add(Conv2D(1, (6, 6),strides=(1, 1), trainable=True))
model.add(Activation('relu', trainable=True))

model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])

我确信这是一种糟糕的方法,尽管它确实有效。

如何仅加载前 9 层?

最佳答案

如果您的前 9 层在原始训练模型和新模型之间的命名一致,那么您可以将 model.load_weights()by_name=True 结合使用。这将仅更新新模型中与原始训练模型中具有相同名称的层的层中的权重。

可以使用name关键字指定图层的名称,例如:

model.add(Dense(8, activation='relu',name='dens_1'))

关于machine-learning - 如何在 Keras 上仅加载特定权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43702323/

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