Python keras在使用多个gpu模型和层时,微调预先训练的模型不会改变权重。可训练=真

Python keras在使用多个gpu模型和层时,微调预先训练的模型不会改变权重。可训练=真,python,tensorflow,keras,multi-gpu,Python,Tensorflow,Keras,Multi Gpu,我正在加载VGG16预训练模型,添加两个密集层,并微调基础VGG16的最后5层。我在多GPU上训练我的模型。我在培训前后保存了模型。重量是相同的,尽管有层。可训练=真 请帮忙 这是密码 from keras import applications from keras import Model <import other relevant Keras layers, etc.> model = applications.VGG16(weights

我正在加载VGG16预训练模型,添加两个密集层,并微调基础VGG16的最后5层。我在多GPU上训练我的模型。我在培训前后保存了模型。重量是相同的,尽管有层。可训练=真

请帮忙

这是密码

    from keras import applications
    from keras import Model
    <import other relevant Keras layers, etc.>


    model = applications.VGG16(weights = "imagenet", include_top = False, input_shape = (224,224,3))

    model.save('./before_training')

    for layer in model.layers:
        layer.trainable = False

    for layer in model.layers[-5:]:
        layer.trainable = True

     x = model.output
     x = Flatten()(x)
     x = Dense(1024, activation = "relu")(x)
     x = Dropout(0.5)(x)
     x = Dense(1024, activation = "relu")(x)
     predictions = Dense(2, activation = "softmax")(x)
     model_final = Model(input = model.input, output = predictions)


     from keras.utils import multi_gpu_model
     parallel_model = multi_gpu_model(model_final, gpus = 4)
     parallel_model.compile(loss = "categorical_crossentropy" ..... )


     datagen = ImageDataGenerator(....)


     early = EarlyStopping(...)

     train_generator = datagen.flow_from_directory(train_data_dir,...)
     validation_generator = datagen.flow_from_directory(test_data_dir,...)

     parallel_model.fit_generator(train_generator, validation_data = valiudation_generator,...)

     model_final.save('./after_training)
来自keras导入应用程序的

从keras导入模型
model=applications.VGG16(weights=“imagenet”,include_top=False,input_shape=(224,3))
model.save(“./before_training”)
对于model.layers中的图层:
layer.trainable=错误
对于模型中的图层。图层[-5:]:
layer.trainable=True
x=模型输出
x=展平()(x)
x=密集(1024,activation=“relu”)(x)
x=辍学率(0.5)(x)
x=密集(1024,activation=“relu”)(x)
预测=密集(2,activation=“softmax”)(x)
模型\最终=模型(输入=模型。输入,输出=预测)
从keras.utils导入多个gpu模型
并联型=多gpu型(最终型,gpu=4)
parallel_model.compile(loss=“categorical_crossentropy”…)
datagen=ImageDataGenerator(..)
早期=早期停止(…)
列车生成器=来自列车目录(列车数据目录…)的数据生成流
验证\u生成器=来自\u目录的datagen.flow\u(测试\u数据\u目录,…)
并联型拟合发生器(序列发生器,验证数据=验证发生器,…)
模型最终保存('./培训后)

训练前和训练后的重量是一样的!!!这不是我所期望的

好的,我再看一下权重矩阵,它看起来确实有点变化。重量的变化太小了,我粗略地看了一眼就没注意到。对不起!你的问题有答案吗?@unholy\u me:似乎。。。