【问题标题】:How to sovle audio signal problem by using 1D conv neural network in keras如何在 keras 中使用 1D conv 神经网络解决音频信号问题
【发布时间】:2020-04-18 11:01:47
【问题描述】:

PS,我已经更改了我的模型,但效果不佳(64%)

我有一个数据集(它是给定的,不是问题)。

all_speakers = np.unique([os.path.basename(i).split('_')[1] for i in fsdd])
np.random.shuffle(all_speakers)
train_speakers = all_speakers[:2]
test_speakers = all_speakers[2:]
print("All   speakers:", all_speakers)
print("Train speakers:", train_speakers)
print("Test  speakers:", test_speakers)

train_files = [
    i for i in fsdd if os.path.basename(i).split('_')[1] in train_speakers
]
test_files = [i for i in fsdd if i not in train_files]

train = create_audio_dataset(train_files, training=True)
test = create_audio_dataset(test_files, training=False)

结果是:

所有发言者:['nicolas' 'theo' 'jackson']

培训演讲者:['nicolas' 'theo']

测试演讲者:['jackson']

目的是创建一个卷积神经网络,并获得90%以上的准确率。
我的模型不够好,我不认为是过拟合的问题。

model = keras.Sequential()
 model.add(keras.layers.Conv1D(64,kernel_size=3,activation='relu',input_shape=(300,40)))
model.add(keras.layers.Conv1D(32,kernel_size=3,activation='relu'))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(100,activation='relu'))
model.add(keras.layers.Dense(10,activation='softmax'))  
model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'],
)

n_epoch = 12
model.fit(x=train.repeat(n_epoch))
model.evaluate(test)

【问题讨论】:

    标签: python numpy tensorflow keras conv-neural-network


    【解决方案1】:

    您应该在每个 Conv1D 层之后避免 maxpooling。最后,maxpooling 会破坏可能很关键的信息(它下采样),尤其是在分析主要依赖于时间相关性的音频信号中。无论如何使用 maxpooling 的原因在 https://stats.stackexchange.com/questions/288261/why-is-max-pooling-necessary-in-convolutional-neural-networks 中。此外,您还可以将 maxpoolingstriding 相结合,这是另一个 下采样。过多的下采样会破坏信息,应该避免。 flattening 也是如此(在图像处理中它会破坏 2D 相关性),但有时它是必要的。

    如果你不固定在https://medium.com/x8-the-ai-community/audio-classification-using-cnn-coding-example-f9cbd272269e 中的一维是一种精度为 97% 的二维方法。

    https://missinglink.ai/guides/keras/keras-conv1d-working-1d-convolutional-neural-networks-keras/ 是用于音频分析的 1D CNN 的 keras 模型,它仅使用 1 个 maxpooling 并且没有跨步。

    【讨论】:

      猜你喜欢
      • 2014-02-25
      • 1970-01-01
      • 2023-03-10
      • 2012-06-03
      • 2015-11-25
      • 2018-11-09
      • 2010-12-09
      • 1970-01-01
      • 2017-05-24
      相关资源
      最近更新 更多