首页 > 解决方案 > 使用预训练模型并创建另一个顺序模型

问题描述

我有一个预训练的模型,如下所示

图 1

上面模型的代码如下,它按预期工作,我已经以“.h5”keras格式单独保存了这个模型

data= pd.read_csv('TrainPWM.csv')
data.values[:,0]
actual_pwm = data.values[:,0]
actual_rpm = data.values[:,1]
actual_pwm = np.reshape(actual_pwm,(36954,1,1))/10000
actual_rpm = np.reshape(actual_rpm,(36954,1,1))/10000
x_train,x_test,y_train,y_test=train_test_split(actual_pwm,actual_rpm,test_size=0.3,random_state=50)
model = models.Sequential()
model.add(layers.LSTM(units=1,return_sequences=True))
model.add(layers.LSTM(units=20,return_sequences=True))
model.add(layers.LSTM(units=20,return_sequences=True))
model.add(layers.LSTM(units=1,return_sequences=True))
model.add(layers.Dense(units=1))
model.compile(optimizer='adam',
          loss='mean_absolute_error',
          metrics=['accuracy'])
model.fit(x_train,y_train,epochs=1)

现在我想创建另一个顺序模型,必须使用上面的预训练模型(rnn2)进行训练,下面有一些解释

图片2

我必须基于此创建一个顺序训练模型,当我给出输入 x 时,首先 rnn1 必须使用 rnn2 基于输出 y 训练自己

我很难想象如何做到这一点

标签: tensorflowkerasrecurrent-neural-network

解决方案


假设您保存了模型权重,例如model.save('my_model.h5').

然后您可以构建第二个模型并将第一个模型嵌入其中:

new_model = models.Sequential()
new_model.add(...)  # Some layers

# Here you add the model you previously trained
# In case you need to use another head, use model.layers[-1].output
convnet = KerasModel(inputs=model.inputs, outputs=model.output)
convnet.set_weights(WEIGHTS_FILE)  # The path to the file where you saved your model
convnet.trainable = False  # Lock in its weights
new_model.add(convnet)

# Add a new head if you got rid of it

推荐阅读