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

Python 如何利用一维conv神经网络解决keras中的音频信号问题,python,numpy,tensorflow,keras,conv-neural-network,Python,Numpy,Tensorflow,Keras,Conv Neural Network,顺便说一句,我已经改变了我的模式,但效果不好(64%) 我有一个数据集(它是给定的,不是问题) 结果是: 所有发言者:[“尼古拉斯”、“西奥”、“杰克逊”] 训练演讲者:['nicolas''theo'] 测试扬声器:[“杰克逊”] 其目的是创建一个卷积神经网络,并获得90%以上的精度。 我的模型不够好,我不认为这是一个过度拟合的问题 model = keras.Sequential() model.add(keras.layers.Conv1D(64,kernel_size=3,activa

顺便说一句,我已经改变了我的模式,但效果不好(64%)

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

结果是:

所有发言者:[“尼古拉斯”、“西奥”、“杰克逊”]

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

测试扬声器:[“杰克逊”]

其目的是创建一个卷积神经网络,并获得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)
您应该避免在每个Conv1D层之后使用maxpooling。最终,maxpooling会破坏可能非常关键的信息(它会减少采样),尤其是在音频信号中,而音频信号的分析主要依赖于时间相关性。使用maxpooling的原因如下所示。此外,您还将最大化池与跨步相结合,这是另一种下采样。过多的下采样会破坏信息,应该避免。这同样适用于展平(在图像处理中,它会破坏2D相关性),但有时这是必要的

如果您没有固定到1D,则使用的是精度为97%的2D方法

这是用于音频分析的1D CNN的keras模型,它只使用1个maxpooling,没有跨步

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)