【发布时间】:2021-08-12 16:17:29
【问题描述】:
我是深度学习的新手,使用 FER 2013 数据集和 resnet 50 模型 我尝试了各种范围的各种学习率,例如我使用 LR= 0.0008 的 ADAM 优化器,但准确性和验证模型都不好过拟合或欠拟合如何使用 Resnet 50 改进我的模型?
我希望模型目标达到 50% 以上的最优,而不会过拟合或欠拟合。
这是我所做的更多: https://github.com/senapahlevi/FER2013-CNN-Resnet-/commits/master/vanilla 这些是我的 LR= 0.0008 的代码
from keras.preprocessing.image import ImageDataGenerator
import keras
from keras.models import Sequential
from keras.layers import Input,Dense
from keras.applications import ResNet50
from keras.applications.resnet50 import preprocess_input
from livelossplot import PlotLossesKeras
from keras.optimizers import Adam
from keras import optimizers
from keras.layers.convolutional import Conv2D,MaxPooling2D,SeparableConv2D
from keras.layers.core import Dropout,Flatten,Dense
from keras.layers.normalization import BatchNormalization
from sklearn import metrics
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
#from keras_hist_graph import plot_history
num_classesft =7
image_resizeft = 48
batch_size_trainingft = 64
batch_size_validationft = 64
path_trainingft = '/content/drive/MyDrive/UjicobaFER/FER2013/train'
path_validationft = '/content/drive/MyDrive/UjicobaFER/FER2013/validation'
data_generator =ImageDataGenerator(
preprocessing_function = preprocess_input
)
training_generator = data_generator.flow_from_directory(
path_trainingft,
target_size = (image_resizeft,image_resizeft),
batch_size = batch_size_trainingft,
class_mode='categorical')
validation_generator = test_datagen.flow_from_directory(
path_validationft,
target_size = (image_resizeft,image_resizeft),
batch_size = batch_size_validationft,
class_mode='categorical',
)
model = Sequential()
model.add(ResNet50(
include_top = False,
pooling='avg',
weights='imagenet',
))
model.add(Dense(num_classesft,activation='softmax'))
model.layers
model.layers[0].layers
model.layers[0].trainable = False
model.summary()
model.compile(optimizer=optimizers.Adam(lr = 0.0008),loss='categorical_crossentropy',metrics=['accuracy'])
steps_per_epoch_training = len(training_generator)/batch_size_trainingft
steps_per_epoch_validation = len(validation_generator)/batch_size_validationft
num_epochs = 45
fit_history = model.fit(
training_generator,
steps_per_epoch = steps_per_epoch_training,
epochs = num_epochs,
validation_data=validation_generator,
validation_steps = steps_per_epoch_validation,
verbose=1)
【问题讨论】:
标签: machine-learning deep-learning conv-neural-network artificial-intelligence