查找信号的基频

我有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

多维度Top-k评分

例如,在机器学习中的自然语言处理中,通常使用波束搜索来…

R – Caret train() “错误:停止” 与 “在newdata中未找到对象中使用的所有变量名”

我正在尝试为蘑菇数据构建一个简单的朴素贝叶斯分类器。我…

创建训练和测试数据集分割,数据嵌套在多个文件夹中

我正在准备数据以训练一个图像识别模型。目前我有一个文件…

我的神经网络预测出现错误:IndexError: list index out of range

我正在进行一个简单的垃圾邮件/非垃圾邮件文本分类。我的…

python 给出数组是一维的,但索引了两个维度错误

我已经为 miniBatchGradientDesce…

TensorFlow自定义训练步骤使用不同的损失函数

背景 根据TensorFlow文档,可以使用以下方式执…

发表回复

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