【问题标题】:Keras: How to load CNN pre-trained weights (freezing the net) to use them in LSTM?Keras:如何加载 CNN 预训练的权重(冻结网络)以在 LSTM 中使用它们?
【发布时间】:2020-04-10 10:14:30
【问题描述】:

我有这个 cnn 模型:

model = Sequential()
model.add(Convolution2D(32, (3, 3), activation='relu', input_shape=(n_rows,n_cols,1)))
model.add(Convolution2D(32, (3, 3), activation='relu'))
model.add(AveragePooling2D(pool_size=(1,3)))
model.add(Flatten())

model.add(Dense(1024, activation='relu')) #needed?
model.add(Dense(3)) #default linear activation

我可以训练它并获得相关权重。

在我想将权重加载到 Flatten(密集部分对第二阶段没有用)并将 Flatten 传递给 LSTM 之后。

当然也建议使用CNN网络上的TimeDistributed。

如何做到这一切:加载权重,只取 CNN 部分,TimeDistribute 它,最后添加 LSTM? 谢谢!

【问题讨论】:

    标签: tensorflow keras lstm conv-neural-network


    【解决方案1】:

    您可以使用model.save_weights("filename.h5") 保存权重,并使用model.load_weights("filename.h5") 将它们加载回模型中。

    来源:https://keras.io/getting-started/faq/#savingloading-only-a-models-weights

    【讨论】:

    • 好的,这是第一部分。但是如何将权重加载到Flatten(密集的部分对第二阶段没有用)TimeDistribute,通过Flatten最后添加LSTM?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2020-06-21
    • 1970-01-01
    • 2021-08-19
    • 2021-04-20
    • 2017-07-07
    相关资源
    最近更新 更多