【问题标题】:Remove last layer from a custom pre-trained model built with Functional API从使用 Functional API 构建的自定义预训练模型中删除最后一层
【发布时间】:2023-02-10 22:52:46
【问题描述】:

我正在构建一个接收文本和音频特征的情绪识别模型。我创建了一个音频特征提取器,它从 opensmile 工具包接收特征向量,以获得更好的向量。

def get_audio_model (lr):

    input_audio = Input(shape = (1, 1422))
    
    audio_hidden1 =  (Bidirectional(LSTM(526, return_sequences = False, input_shape = (1, 1422), recurrent_dropout=0.5)))(input_audio)
    drop1 = Dropout(0.3)(audio_hidden1)
    audio_hidden3 =  Dense(256, activation='relu')(drop1)
    
    final = Dense(3, activation='softmax')(audio_hidden3)
    
    model = keras.Model(inputs=input_audio, outputs=final, name="audio_extractor")

    model.compile(loss='categorical_crossentropy', optimizer = keras.optimizers.Adam(learning_rate = lr), metrics=['accuracy', precision, recall])
    
    return model

我已经训练了这个模型,保存它并通过以下方式加载它

audio_model.save('audio_feature_extractor.h5') loaded_audio_model = keras.models.load_model('audio_feature_extractor.h5')

我想从加载的模型中删除顶层,以便我可以使用层 audio_hidden3 的输出并将其与其他向量连接。 我试过 pop() 但它在功能模型中没有做任何事情。我也试过

audioft_extractor = loaded_audio_model.layers[0:-1]

但它只是创建一个包含图层的列表。关于如何删除最后一层的任何想法?

【问题讨论】:

    标签: python tensorflow keras functional-api


    【解决方案1】:

    如何创建新模型但指定如下:

    new_model = Model(inputs=..., outputs=loaded_audio_model.layers[-1].output
    

    【讨论】:

      猜你喜欢
      • 2020-01-30
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多