簡體   English   中英

轉學習中的問題 - 無法使用keras傳遞權重

[英]Problem in transfer learning - couldn't transfer weights using keras

我使用監督學習訓練網絡並保存其權重,現在我創建了一個帶有附加層的新網絡(新網絡包含舊網絡的相同層並具有附加層),我需要將所有舊網絡權重轉移到新網絡中並保留新的附加層隨機初始化,但當我使用新的權重時,它采取隨機預測(權重隨機初始化)。 舊網絡的weights.h5與磁盤中新網絡的weights.h5大小不同。

from keras import layers, models, optimizers
from keras import backend as K
import numpy as np
from keras.models import Model, load_model



import keras.losses

model = load_model("nvidia_41_named.h5") #the old network
model.load_weights("nvidia_41_named_weights.h5") # the old weights

actor=load_model("actormodel.h5") #the new network

for layer in model.layers : 
    name = layer.name

    for lay in actor.layers : 
        if lay.name == name:
            print(lay.name)
            weights = model.get_layer(name).get_weights()
            actor.get_layer(name).set_weights(weights)
            print(lay.name,'correctly transferred')
            print("========================================")

兩個網絡的原理圖: 這張照片描述了新舊網絡之間的關系

我今天早些時候遇到了同樣的問題但是找不到stackoverflow的答案了。 如果使用model.load_weights("./weights_cnn.hdf5", by_name=True)命名舊模型中的model.load_weights("./weights_cnn.hdf5", by_name=True)標記“by_name”很重要!)它應該為命名圖層加載正確的權重。

cnn1 = tf.keras.layers.Conv2D(filters, kernel, padding="same", activation='relu', name='conv_1_j')(inp_layer)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM