是否有一种方法来训练CNN模型,保存此CNN的权重,然后使用此权重来为其他训练数据重新训练此CNN?

有人告诉我有关这种类型的实验的信息。 第一步是训练cnn并保持权重,第二步是使用这些权重来重新训练此cnn,但这一次将更多数据添加到您的训练集中(微调)。

我想这就像是转移学习,但带有您要训练的cnn。 有没有一种方法可以在训练cnn之前选择权重,然后选择要提交的权重?

所以到目前为止,我的工作是训练cnn模型并将权重保存到h5文件中,并使用以下代码

model.compile(loss='categorical_crossentropy',optimizer=opt,metrics=['accuracy'])
validation_data=(x_testcnn,y_test))
checkpoint_path= 'scratchmodel.best.h5'
save_dir = os.path.join(os.getcwd(),'weights')
cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path,save_weights_only=True,verbose=1)
 cnnhistory=model.fit(x_traincnn,y_train,batch_size=16,epochs=400,validation_data=(x_testcnn,y_test),callbacks=[cp_callback])

现在,我想使用相同的权重来训练相同的cnn,但是这次将数据添加到训练集中。 有没有办法做到这一点? 感谢您的帮助。

Q53558217 回答:是否有一种方法来训练CNN模型,保存此CNN的权重,然后使用此权重来为其他训练数据重新训练此CNN?

是的,您只需要将权重加载到新创建的模型中,然后使用新数据进行训练即可。

from tensorflow.python.keras.models import load_model #Tensorflow 2.0

new_model.compile(loss='categorical_crossentropy',optimizer=opt,metrics=['accuracy'])
new_model = load_model(filepath,compile=False) #compile=False allows you to load saved optimizer state

new_model.fit(...) # Fit on new data,leveraging training on old data
本文链接:https://www.f2er.com/2642051.html

大家都在问