查找信号的基频

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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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