首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用一维conv神经网络解决角星中的音频信号问题

如何利用一维conv神经网络解决角星中的音频信号问题
EN

Stack Overflow用户
提问于 2019-12-29 09:43:10
回答 1查看 630关注 0票数 3

PS,我已经改变了我的模型,但是效果不太好(64%)

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

代码语言:javascript
复制
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)

其结果是:

所有演讲者:“尼古拉斯”“西奥”“杰克逊”

培训演讲者:“尼古拉斯”“theo”

试听者:“杰克逊”

目的是建立一个卷积神经网络,其精度可达90%以上。

我的模型不够好,我不认为这是一个过分合适的问题。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-29 20:29:47

您应该避免在每个Conv1D层之后使用最大池。最后,can池会破坏可能非常关键的信息(它是下采样),特别是在音频信号中,音频信号的分析本质上取决于时间相关性。在https://stats.stackexchange.com/questions/288261/why-is-max-pooling-necessary-in-convolutional-neural-networks中仍然使用are池的原因。此外,您还将what池与跨越式结合起来,这是另一个下采样。太多的低采样会破坏信息,应该避免。这同样适用于平展(在图像处理中,它破坏了2D相关性),但有时它是相关的。

如果你没有固定到1D在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/是用于音频分析的一维CNN的keras模型,它只使用一个最大池,不使用步长。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59518294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档