gpt4 book ai didi

python - 如何为每个时期保存keras模型的权重?

转载 作者:行者123 更新时间:2023-12-01 21:43:10 24 4
gpt4 key购买 nike

我想保存 keras 模型,我想保存每个时期的权重以获得最佳权重。我该怎么做?

如有任何帮助,我们将不胜感激。

代码:

def createModel():
input_shape=(1, 22, 5, 3844)
model = Sequential()
#C1
model.add(Conv3D(16, (22, 5, 5), strides=(1, 2, 2), padding='same',activation='relu',data_format= "channels_first", input_shape=input_shape))
model.add(keras.layers.MaxPooling3D(pool_size=(1, 2, 2),data_format= "channels_first", padding='same'))
model.add(BatchNormalization())
#C2
model.add(Conv3D(32, (1, 3, 3), strides=(1, 1,1), padding='same',data_format= "channels_first", activation='relu'))#incertezza se togliere padding
model.add(keras.layers.MaxPooling3D(pool_size=(1,2, 2),data_format= "channels_first", ))
model.add(BatchNormalization())

#C3
model.add(Conv3D(64, (1,3, 3), strides=(1, 1,1), padding='same',data_format= "channels_first", activation='relu'))#incertezza se togliere padding
model.add(keras.layers.MaxPooling3D(pool_size=(1,2, 2),data_format= "channels_first",padding='same' ))
model.add(Dense(64, input_dim=64, kernel_regularizer=regularizers.l2(0.01), activity_regularizer=regularizers.l1(0.01)))
model.add(BatchNormalization())

model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(256, activation='sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))

opt_adam = keras.optimizers.Adam(lr=0.00001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='categorical_crossentropy', optimizer=opt_adam, metrics=['accuracy'])

return model

最佳答案

model.get_weights() 将返回一个张量作为 numpy 数组。您可以使用 np.save() 将这些权重保存在扩展名为 .npy 的文件中。

要在每个时期保存权重,您可以在 Keras 中使用称为回调的东西。

from keras.callbacks import ModelCheckpoint

在执行 model.fit 之前,定义一个检查点如下

checkpoint = ModelCheckpoint(.....),将参数 'period' 指定为 1,它指定 epoch 的周期性。这应该可以做到。

关于python - 如何为每个时期保存keras模型的权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61046870/

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