【发布时间】:2020-05-16 23:43:15
【问题描述】:
我正在研究皮肤癌识别模型。 我正在尝试使用 keras 和 tensorflow 训练我的模型,但我注意到 val_accuracy 没有改变,它停留在 54%,而准确度和损失以及 val_loss 正在改变。 我为 ResNet50 层使用了预训练的权重,然后我添加了其他层并冻结了第一层以训练其余层。 这是我的模型:
model = keras.Sequential()
model.add(ResNet50(include_top=False,input_tensor=None, input_shape=(224,224,3)
,pooling='avg',classes=2,weights=resnet_weights_path))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(Dense(1, activation='sigmoid'))
model.layers[0].trainable = False
model.summary()
model.compile(optimizer=SGD(lr=0.001),loss='binary_crossentropy',metrics=['accuracy'])
red_lr= ReduceLROnPlateau(monitor='val_accuracy',patience=3,verbose=1,factor=0.7)
batch_size=64
epochs=150
History = model.fit_generator(datagen.flow(x_train,y_train,batch_size=batch_size),validation_data=(x_val,y_val),
epochs= epochs, steps_per_epoch=x_train.shape[0]//batch_size,verbose=1,callbacks=[red_lr]
)
这是训练的日志:
Epoch 1/150
25/25 [==============================] - 200s 8s/step - loss: 0.1236 - accuracy: 0.9498 - val_loss: 2.0365 - val_accuracy: 0.5470
Epoch 2/150
25/25 [==============================] - 195s 8s/step - loss: 0.1251 - accuracy: 0.9530 - val_loss: 2.0819 - val_accuracy: 0.5470
Epoch 3/150
25/25 [==============================] - 199s 8s/step - loss: 0.1314 - accuracy: 0.9500 - val_loss: 2.1083 - val_accuracy: 0.5470
等等 所以如果你能看到我的模型有什么问题,请帮忙! 谢谢!
【问题讨论】:
-
尝试使用 1) weights='imagenet',(2) 使用 validation_steps,(3) 检查移除回调的准确性,增加耐心 (4) 使用数据增强
标签: python tensorflow keras model conv-neural-network