我目前正在学习神经网络,但在尝试学习卷积神经网络(CNN)时遇到了问题。我试图训练包含音乐流派的频谱图数据。我的数据包括27000个频谱图,并分为3类(流派)。我的数据按9:1比例划分为训练和验证。
请问有人能告诉我为什么验证损失/准确性的结果会波动吗?我正在使用Keras中的MobileNetV2,并将其连接到3个稠密层。以下是我的代码片段:
这是我的验证损失和验证准确性曲线图,波动太大了。
有什么办法可以减少波动或使其更好吗?这里是否存在过拟合或欠拟合问题?我尝试使用Dropout(),但只会使情况更糟。我需要怎么做才能解决这个问题呢?
谢谢, Aquilla Setiawan Kanadi。
请问有人能告诉我为什么验证损失/准确性的结果会波动吗?我正在使用Keras中的MobileNetV2,并将其连接到3个稠密层。以下是我的代码片段:
train_datagen = ImageDataGenerator(
preprocessing_function=preprocess_input,
validation_split=0.1)
train_generator = train_datagen.flow_from_dataframe(
dataframe=traindf,
directory="...",
color_mode='rgb',
x_col="ID",
y_col="Class",
subset="training",
batch_size=32,
seed=42,
shuffle=True,
class_mode="categorical",
target_size=(64, 64))
valid_generator = train_datagen.flow_from_dataframe(
dataframe=traindf,
directory="...",
color_mode='rgb',
x_col="ID",
y_col="Class",
subset="validation",
batch_size=32,
seed=42,
shuffle=True,
class_mode="categorical",
target_size=(64, 64))
base_model = MobileNetV2(weights='imagenet', include_top=False)
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1025, activation='relu')(x)
x = Dense(1025, activation='relu')(x)
x = Dense(512, activation='relu')(x)
preds = Dense(3, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=preds)
model.compile(optimizer='adam', loss='categorical_crossentropy',
metrics=['accuracy'])
step_size_train = train_generator.n//train_generator.batch_size
step_size_valid = valid_generator.n//valid_generator.batch_size
history = model.fit_generator(
generator=train_generator,
steps_per_epoch=step_size_train,
validation_data=valid_generator,
validation_steps=step_size_valid,
epochs=75)
这是我的验证损失和验证准确性曲线图,波动太大了。
有什么办法可以减少波动或使其更好吗?这里是否存在过拟合或欠拟合问题?我尝试使用Dropout(),但只会使情况更糟。我需要怎么做才能解决这个问题呢?
谢谢, Aquilla Setiawan Kanadi。