【问题标题】:What are other weight types for model wrappers in Keras?Keras 中模型包装器的其他权重类型是什么?
【发布时间】:2020-05-13 15:36:23
【问题描述】:
from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np

model = ResNet50(weights='imagenet')

在这段代码中,有一个“包装器”(即它所指的)ResNet50。我可以为此使用哪些其他类型的重量?我试着环顾四周,但我什至不明白源代码;那里也没有任何结论

【问题讨论】:

    标签: python machine-learning keras computer-vision resnet


    【解决方案1】:

    您可以在keras doc 上找到它 或github code

    只有两个选项,None 如果您只想要没有权重的架构,或者imagenet 加载 imagenet 权重。

    编辑:如何使用我们自己的权重:

    # Take a DenseNET201
    backbone = tf.keras.applications.DenseNet201(input_shape=input_shape, weights=None, include_top=False)
    
    # Change the model a little bit, because why not
    input_image = tf.keras.layers.Input(shape=input_shape)
    x = backcone(input_image)
    x = tf.keras.layers.Conv2D(classes, (3, 3), padding='same', name='final_conv')(input)
    x = tf.keras.layers.Activation(activation, name=activation)(x)
    model = tf.keras.Model(input, x)
    
    #... some additional code
    # training part
    optimizer = tf.keras.optimizers.Adam(lr=FLAGS.learning_rate)
    model.compile(loss=loss,
                  optimizer=optimizer,
                  metrics=['accuracy', f1_m, recall_m, precision_m])
    
    callbacks = [tf.keras.callbacks.ModelCheckpoint(filepath=ckpt_name)]
    
    model.fit(train_generator, validation_data=validation_generator, validation_freq=1, epochs=10, callbacks=callbacks)
    
    # using the callback there will weights saved in cktp_name each epoch
    # Inference part, just need to reinstance the model (lines after #Change part comment)
    
    model.load_weights(ckpt_name)
    
    results = model.predict(test_generator, verbose=1)
    
    

    你显然不需要改变模型,你可以使用x = backbone(x)然后model = tf.keras.Model(input, x)

    【讨论】:

    • 可以导入我自己的重量吗?我正在研究一个使用 ResNet 的项目。
    • 是的,假设您已经使用 keras 进行了训练,在训练结束时您可以保存权重。如果你想在之后使用它们,你只需要重新实例化你的模型(与以前相同的层)然后加载权重,看看this stack answer
    • 我在帖子中添加了我如何使用自己的权重进行推断
    猜你喜欢
    • 2019-05-20
    • 2020-03-13
    • 2019-08-02
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多