首页 > 解决方案 > 在音频分类中增加 val_acc

问题描述

我有属于 10 个类的 530 个数据点。我不确定应该为num_rowsand使用哪些数字num_columns

num_rows = 40在这段代码中,我有num_columns = 174

model = Sequential()
model.add(Conv2D(filters=32, kernel_size=2, input_shape=(num_rows, num_columns, num_channels), activation='relu'))
model.add(MaxPooling2D(pool_size=2))
#model.add(Dropout(0.2))

model.add(Conv2D(filters=64, kernel_size=2, kernel_regularizer=l2(0.00001), bias_regularizer=l2(0.0001), activation='relu'))
model.add(MaxPooling2D(pool_size=2))
#model.add(Dropout(0.2))

model.add(Conv2D(filters=128, kernel_size=2, kernel_regularizer=l2(0.00001), bias_regularizer=l2(0.0001), activation='relu'))
model.add(MaxPooling2D(pool_size=2))
model.add(Dropout(0.2))

model.add(Conv2D(filters=128, kernel_size=2, kernel_regularizer=l2(0.00001), bias_regularizer=l2(0.0001),  activation='relu'))
model.add(MaxPooling2D(pool_size=2))
model.add(Dropout(0.2))
#model.add(GlobalAveragePooling2D())

model.add(Flatten())
model.add(Dense(512, activation='relu'))
#model.add(Dropout(0.2))
model.add(Dense(256, activation='relu'))
#model.add(Dropout(0.2))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='relu'))

model.add(Dense(10, activation='softmax'))
# Compile the model
#opt = keras.optimizers.Adam(learning_rate=0.001)
model.compile(loss='categorical_crossentropy', metrics=\['accuracy'\], optimizer="Adam")

模型损失

标签: pythontensorflowneural-networkconv-neural-network

解决方案


我猜你的输入上有某种频谱图(因为你正在处理音频,但输入上有 3 维形状)。您input_shape必须反映您在输入中传递的图像的大小。只需检查它们的宽度和高度 - 这些是你的num_rowsnum_columns

根据该代码,图像有 3 个色带。这对照片很有意义,但对频谱图却很少。请记住,这些是通常为创建视觉上令人愉悦的可视化而生成的错误颜色,但在进行分类时不会得到任何东西。单通道就够了,像素强度反映了信号的强度(幅度)。

您可以做三件简单的事情:

  • 使用单色图像,例如input_shape=(num_rows, num_columns, 1)。颜色只会混淆分类器。
  • 获取更多数据并使用增强。
  • kernel_size=2没有什么意义。首先阅读卷积以及内核是什么。

推荐阅读