我在我的数据集上尝试了Keras中提供的一些模型。这是一个10级的图像分类问题。我尝试过从头开始的培训,微调整个网络并转移学习每个架构。除了使用Resnet50进行传输学习外,它们中的大多数在我的数据集上表现都很好。这是我正在使用的模型:
model = applications.resnet50.ResNet50(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
for layer in model.layers:
layer.trainable = False
x = model.output
x = Flatten()(x)
x = Dense(128, activation="relu")(x)
x = Dropout(0.3)(x)
x = Dense(128, activation="relu")(x)
x = Dropout(0.3)(x)
x = Dense(128, activation="relu")(x)
x = Dropout(0.3)(x)
x = Dense(128, activation="relu")(x)
predictions = Dense(output_dim=10, activation="softmax")(x)
model_final = Model(input=model.input, output=predictions)
所有图像都已调整为(224 x 224)像素大小。我尝试过具有各种学习率和批量大小的adam优化器,如:
lr=0.00001, batch=64
lr=0.00005, batch=256
lr=0.001, batch=256
lr=0.001, batch=128
lr=0.001, batch=64
lr=0.001, batch=32
lr=0.0001, batch=64
lr=0.0001, batch=32
lr=0.0001, batch=128
但是模型仍然预测所有图像属于同一类,具体而言,该类包含所有图像的26%。在培训期间,培训损失减少,验证损失似乎增加。训练结束时训练准确率高于95%,但验证准确率达到26%。当从头开始训练相同型号(Resnet50)或进行微调时,这个问题并不存在。没有跳过连接的模型(例如InceptionV3,Xception,VGG16)始终表现出良好的性能,无论是从头开始训练,还是使用微调或转移学习。使用跳过连接的其他模型(InceptionResnetV2,DenseNet)在使用传输学习时不会预测所有图像属于同一类,但与"没有跳过连接&#34相比,准确度稍低一些;楷模。同样,这些模型(InceptionResnetV2,DenseNet)在使用从头开始训练或微调时表现出良好的性能。
所以我的问题是,
在使用传输学习时,跳过连接是否会损害模型的性能?
我正在使用带有张量流后端的Keras。