tensorflow - 使用预训练模型并创建另一个顺序模型
问题描述
我有一个预训练的模型,如下所示
上面模型的代码如下,它按预期工作,我已经以“.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)进行训练,下面有一些解释
我必须基于此创建一个顺序训练模型,当我给出输入 x 时,首先 rnn1 必须使用 rnn2 基于输出 y 训练自己
我很难想象如何做到这一点
解决方案
假设您保存了模型权重,例如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
推荐阅读
- rust - rust 宏如何使用 + 分隔符?
- php - Laravel 关系关系
- javascript - 如何以特定顺序排列对象数组
- c# - 如何在统一几秒钟后将游戏对象设置为非活动状态然后激活?
- batch-file - 如何使用变量名删除以前的文件夹(批处理脚本)
- react-native - 如何选择有条件的 createStackNavigator 屏幕?
- c++ - 将最小出现次数留在堆栈底部的函数
- python-3.x - Tensorflow Keras - 堆叠 LSTM 层时出错
- c# - 在 ASP.NET Core 3 中是否有使用蛇形大小写作为 JSON 命名策略的内置方式?
- json - 如何增加 Json Compiled 数据中处理的行数