我正在使用Google Colab的免费版本,由于1.内存限制:我的数据集太大而无法容纳在内存中;或2.训练时间超过了12小时(这段时间之后,我会自动断开连接)。 因此,我想拆分大型数据集,在第一部分进行训练,保存模型,然后在第二部分继续进行训练。我在一个模型上尝试了这种方法,我可以一次训练所有模型以查看最终结果是否相同。但事实并非如此-分两批训练的模型的效果更差。
我的方法:
常规火车:有效拆分:
X_train,X_valid,y_train,y_valid = train_test_split(X,y,test_size = 0.1,random_state = 42)
将火车和有效数组一分为二:
X_train1 = X_train [:746] y_train1 = y_train [:746] X_train2 = X_train [746:] y_train2 = y_train [746:] X_valid1 = X_valid [:83] y_valid1 = y_valid [:83] X_valid2 = X_valid [83:] y_valid2 = y_valid [83:]
定义模型(我在回调中定义ModelCheckpoint(例如'path / test_model.h5'))
仅使用拆分数据集的前半部分训练模型:
结果= model.fit(X_train1,y_train1,batch_size = 32,纪元= 50,回调=回调,validation_data =(X_valid1,y_valid1))
保存模型:
model.save('/ path / partly_trained.h5')
重新加载模型:
模型= load_model('/ path / partly_trained.h5')
继续训练另一半:
results = model.fit(X_train2,y_train2,batch_size = 32,epochs = 50,callbacks = callbacks,validate_data =(X_valid2,y_valid2))
如果我一次训练所有相同模型和数据集的结果:损失:0.2646-精度:0.8592-精度:0.8906-召回率:0.6760,F1 = 0.7686
为什么结果如此不同?学习曲线更加奇怪,请参阅附件。您有什么想法吗?文件“ path / test_model.h5”中的权重会怎样?当我从第二部分开始训练时,来自第一部分训练的内容是否被更新或重写?我以后可以使用它们进行预测吗? 谢谢! training all at once,training on the 1st half,training on the 2nd half