Keras-layer.trainable = False以冻结图层不起作用

问题描述

我正在训练RNN对三个不同的类别进行分类。因为第2类的准确性很高,所以我尝试先训练RNN来对其他两个类进行分类保存模型,加载模型,冻结较低的图层,然后再次包括第2类进行训练。即使经过4个纪元的训练并冻结了所有图层,第2类的准确性仍然很高,而其他的则再次下降。

模型如下:

model = Sequential()
        model.add(LSTM(64,return_sequences=True,input_shape=(data.X_train.shape[1],data.X_train.shape[2])))
        model.add(Dropout(0.2))
        model.add(LSTM(128,return_sequences=True))
        model.add(Batchnormalization())
        model.add(Dropout(0.2))
        model.add(LSTM(128,return_sequences=True))
        model.add(Batchnormalization())
        model.add(Dropout(0.2))
        model.add(LSTM(64,return_sequences=True))
        model.add(Batchnormalization())
        model.add(Dropout(0.2))
        model.add(LSTM(32,return_sequences=True))
        model.add(Batchnormalization())
        model.add(Dropout(0.2))
        model.add(LSTM(16,return_sequences=True))
        model.add(Batchnormalization())
        model.add(Dropout(0.2))
        model.add(LSTM(8,return_sequences=True))
        model.add(Batchnormalization())
        model.add(Dropout(0.2))
        model.add(LSTM(4))
        model.add(Dense(data.y_test.shape[1],activation='softmax'))

加载和冻结前四层:

        model = load_model(model_path)
        for layer in model.layers[:4]:
            layer.trainable = False
        model.compile(loss='categorical_crossentropy',optimizer=ad,metrics=['accuracy','categorical_accuracy'])

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)