由于软件包不一致导致无法安装h5py,我想知道是否可以在Keras中保存和加载权重以继续在新数据上训练模型。我知道我可以执行以下操作:
old_weights = model.get_weights()
del model
new_model.set_weights(old_weights)
其中model是旧模型,new_model是新模型。这是一个完整的示例:
for i in training data:
model = Sequential()
model.add(Dense(20, activation='tanh', input_dim=Input))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
model.fit(X, y, epochs=8, batch_size=16, shuffle=False, verbose=0)
new_model = Sequential()
new_model.add(Dense(20, activation='tanh', input_dim=Input))
new_model.add(Dense(1))
new_model.compile(optimizer='adam', loss='mse')
old_weights = model.get_weights()
del model
new_model.set_weights(old_weights)
model=new_model
我想在阅读每个训练示例(每次迭代的X和y不同)之后保存权重并再次加载它,然后从预先训练的模型开始。我不确定我的代码是否执行此操作,因为我将再次定义优化器和model.compile。如果以下代码保存了模型,并且每次迭代都从经过预训练的模型开始,谁能帮助我。
答案 0 :(得分:1)
您不需要继续重新编译模型。而是在加载样本后多次拟合模型。
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(20, activation='tanh', input_dim=Input))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
# load the data into training_data
for data in training_data:
model.fit(data[0], data[1], epochs=8, batch_size=16, shuffle=False, verbose=0)