【问题标题】:Save Keras Model and Reuse It For Transfer Learning保存 Keras 模型并将其重用于迁移学习
【发布时间】:2021-06-30 17:13:22
【问题描述】:

我在 Keras 中为 CNN 构建了一个模型。我想保存这个模型,并将这个经过训练的模型作为预训练模型重用于迁移学习。我不明白保存模型以重用于迁移学习的正确方法是什么。再次说明如何在 Keras 中加载我的预训练模型,以便在加载之前的模型后添加一些层。

这是我构建的模型

model_cnn = Sequential()      # initilaizing the Sequential nature for CNN model
# Adding the embedding layer which will take in maximum of 450 words as input and provide a 32 dimensional output of those words which belong in the top_words dictionary
model_cnn.add(Embedding(vocab_size, embedding_size, input_length=max_len))
model_cnn.add(Conv1D(32, 3, padding='same', activation='relu'))
model_cnn.add(Conv1D(64, 3, padding='same', activation='relu'))
model_cnn.add(MaxPooling1D())
model_cnn.add(Flatten())
model_cnn.add(Dense(250, activation='relu'))
model_cnn.add(Dense(2, activation='softmax'))

# optimizer = keras.optimizers.Adam(lr=0.001)
model_cnn.compile(
    loss='categorical_crossentropy', 
    optimizer=sgd, 
    metrics=['acc',Precision(),Recall(),]
)

history_cnn  = model_cnn.fit(
    X_train, y_train,
    validation_data=(X_val, y_val), 
    batch_size = 64,
    epochs=epochs,
    verbose=1
)

【问题讨论】:

    标签: python machine-learning keras transfer-learning


    【解决方案1】:

    推荐的模型保存方式,是用SavedModel格式保存:

    dir = "target_directory"
    model_cnn.save(dir) # it will save a .pb file with assets and variables folders 
    

    然后就可以加载了:

    model_cnn = tf.keras.models.load_model(dir)
    

    现在,您可以添加一些图层并制作另一个模型。例如:

    input = tf.keras.Input(shape=(128,128,3))
    x = model_cnn(input)
    x = tf.keras.layers.Dense(1, activation='sigmoid')(x)
    new_model = tf.keras.models.Model(inputs=input, outputs=x)
    

    【讨论】:

    猜你喜欢
    • 2018-03-02
    • 2020-05-13
    • 2021-06-03
    • 2023-03-19
    • 2023-03-27
    • 1970-01-01
    • 2020-10-04
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多