Найти основную частоту сигнала - PullRequest
0 голосов
/ 13 марта 2019

У меня есть 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.
Я ценю любой совет.

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Каков наилучший подход к построению нейронной сети для прогнозирования основной частоты для вновь поступающего сигнала?

Это слишком широкий вопрос для SO, и, следовательно, вы не должныдействительно ожидайте какого-либо достаточно подробного осмысленного ответа.

Тем не менее, в вашем коде есть определенные проблемы, и исправление их, вероятно, сделает вас на шаг ближе к достижению вашей конечной цели.

Итак, высовершаем очень фундаментальную ошибку:

Точность подходит только для задач классификации;для регрессионных (то есть числовых предсказаний) таких, как ваша, точность не имеет смысла .

Более того, Керас, к сожалению, не будет «защищать» вас или любого другого пользователя оттакие бессмысленные запросы в вашем коде, то есть вы не получите никакой ошибки или даже предупреждения, что вы пытаетесь сделать что-то, что не имеет смысла, например, запросить точность в настройке регрессии;см. мой ответ в Какая функция определяет точность в Керасе, когда потеря представляет собой среднеквадратическую ошибку (MSE)? для получения более подробной информации и практической демонстрации.

Итак, здесь ваш показатель производительности на самом делетакой же, как ваша потеря, т.е. средняя квадратическая ошибка (MSE);вам следует сделать так, чтобы это количество в вашем наборе проверки было как можно меньше, и полностью исключить аргумент metrics=['accuracy'] из компиляции вашей модели.

Кроме того, в настоящее время мы практически никогда не используем активацию tanh дляскрытые слои;вы должны попробовать relu вместо.

0 голосов
/ 13 марта 2019

Вы можете сначала БПФ данные, с или без окна, а затем использовать векторы величины БПФ в качестве векторов данных обучения ML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...