查找信号的基频

我有1000个数据集,每个数据集包含8000个信号幅度和一个标签——该信号的基频。对于新提供的信号,构建神经网络预测基频的最佳方法是什么?

例如:
基频:75.88206932 Hz
数据片段:

 -9.609272558949627507e-02 -4.778297441391140543e-01 -2.434520972570237696e-01 -1.567176020112603263e+00 -1.020037056101358752e+00 -1.129608807811322446e+00  4.303651786855859918e-01 -3.936956061582048694e-01 -1.224883726737033163e+00 -1.776803300708089672e+00

我创建的模型:(训练集形状:(600,8000,1)

  model=Sequential()   model.add(Conv1D(filters=64, kernel_size=3, activation='tanh', \                    input_shape=(data.shape[1],data.shape[2])))   model.add(MaxPooling1D(pool_size=2))   model.add(Conv1D(filters=64, kernel_size=3, activation='tanh'))   model.add(MaxPooling1D(pool_size=2))   model.add(Conv1D(filters=64, kernel_size=3, activation='tanh'))   model.add(MaxPooling1D(pool_size=2))   model.add(Flatten())  model.add(Dense(500, activation='tanh'))  model.add(Dropout(0.2))  model.add(Dense(50, activation='tanh'))  model.add(Dropout(0.2))  model.add(Dense(1, activation='linear'))   model.compile(loss='mean_squared_error', optimizer='adam', metrics=["accuracy"])

但模型无法训练。准确率~ 0.0
非常感谢任何建议。


回答:

对于新提供的信号,构建神经网络预测基频的最佳方法是什么?

这个问题对于SO来说过于宽泛,因此您不应期望得到任何足够详细且有意义的答案。

尽管如此,您的代码确实存在一些问题,解决这些问题无疑会让您更接近实现最终目标。

因此,您犯了一个非常基本的错误:

准确率只适用于分类问题;对于回归(即数值预测)问题,如您的情况,准确率是没有意义的

更重要的是,Keras不幸地不会“保护”您或其他用户在代码中提出这种无意义的请求,即您不会得到任何错误或警告,指出您正在尝试一些不合理的事情,比如在回归设置中请求准确率;有关更多细节和实际演示,请参阅我的回答:当损失为均方误差(MSE)时,Keras中定义准确率的函数是什么?

因此,您的性能指标实际上与您的损失相同,即均方误差(MSE);您应该努力使验证集中的这个量尽可能小,并且完全删除模型编译中的metrics=['accuracy']参数。

此外,现在我们几乎从不使用tanh激活函数作为隐藏层的激活函数;您应该尝试使用relu代替。

Related Posts

如何从数据集中移除EXIF数据?

我在尝试从数据集中的图像中移除EXIF数据(这些数据将…

用于Python中的“智能点”游戏的遗传算法不工作

过去几天我一直在尝试实现所谓的“智能点”游戏。我第一次…

哪个R平方得分更有帮助?

data.drop(‘Movie Title’, ax…

使用线性回归预测GRE分数对录取率的影响

我正在学习线性回归,并尝试在Jupyter笔记本中用P…

使用mlrMBO贝叶斯优化进行SVM超参数调优时出现错误

我试图针对一个分类任务优化SVM,这个方法在许多其他模…

Keras模型的二元交叉熵准确率未发生变化

我在网上看到了很多关于这个问题的提问,但没有找到明确的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注