【问题标题】:Use pretrained model and create another sequential model使用预训练模型并创建另一个顺序模型
【发布时间】:2019-08-28 12:56:48
【问题描述】:

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

Image 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)进行训练,下面有一些解释

Image2

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

我无法想象如何做到这一点

【问题讨论】:

    标签: tensorflow keras recurrent-neural-network


    【解决方案1】:

    假设您保存了模型权重,例如 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
    

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      • 2021-11-14
      相关资源
      最近更新 更多