【问题标题】:How can I load the weights only for some layers?如何仅为某些图层加载权重?
【发布时间】:2017-09-03 19:08:00
【问题描述】:

我想从model_trained 中获取某些层的权重——不是全部,因为架构不同——并用它初始化model_untrained。如何使用 Keras 做到这一点?

【问题讨论】:

    标签: keras


    【解决方案1】:

    如果你有一个函数 create_model() 返回一个 Keras 模型 (example),你可以像这样初始化它的权重:

    from keras.models import load_model
    
    model_untrained = create_model()
    model_trained = load_model('trained_model.h5')
    
    extracted_weights = model_trained.layers[0].get_weights()
    model_untrained.layers[0].set_weights(extracted_weights)
    

    【讨论】:

    • extracted_weights 的类型是一个列表。就我而言,我试图从特定层的自定义训练模型中提取特征。 seq.add(Dense(128,name ='feature_dense')) seq.load_weights(by_name=True,filepath='weights-improvement.hdf5') #面临问题文件名未在此处定义 训练模型后。我使用下面的代码指向所需的层。 middle_layer_model = Model(inputs=model.input, outputs=model.get_layer('feature_dense').output) 这里出现错误 --> ValueError: No such layer: feature_dense
    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 2013-04-06
    • 2014-10-31
    • 2013-12-11
    • 2012-12-28
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多