Russian Qt Forum
Ноябрь 22, 2024, 08:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 3 4 [5]   Вниз
  Печать  
Автор Тема: К проблеме предсказания событий  (Прочитано 33713 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #60 : Октябрь 23, 2019, 07:56 »

А сколько в вашей задаче класифицирующих параметров?
Мне интересно определять форму кривой.
Входные данные это одномерный массив амплитуд во времени.

Программа минимум: получить класс кривой. Например: прямая, синусоида, треугольный сигнал, прямоугольный сигнал.
Амплитуда у всех кривых изменяется от -1 до +1, а вот периодов за это время может быть разное число.
Я по быстрому сделал пример, сеть прямую от синусоиды отличает легко, на реальных сигналах проверить не получается в связи с нехваткой времени. Улыбающийся

Возможно, придется обучать сеть по кривым с разными амплитудами, что бы сеть сама справлялась с флуктуациями реального сигнала.

Следующий шаг, это попробовать определять крутизну фронтов, например треугольник с крутым передним фронтом, ровнобедренный треугольник, треугольник с крутым задним фронтом. Может разделить классы по крутизне фронтов.

В программе минимум: вход 1024 значения амплитуды - выход 4 класса (прямая, синусоида, треугольник, прямоугольник).
В следующем шаге: вход тот же - выходов ?? классов (прямая, синусоида крутая, синусоида равнобедренная, синусоида пологая, треугольник крутой, ... ). Улыбающийся

Вот как-то так я обдумываю. Улыбающийся
« Последнее редактирование: Октябрь 23, 2019, 08:09 от Old » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #61 : Октябрь 27, 2019, 16:55 »

Усовершенствовал алгоритм и перевёл всё на bitset. Всё стало просто летать)
На вход подаётся bitset<IN_SIZE>, на выходе bitset<OUT_SIZE>

Провёл сравнительные тесты на зашумлённых данных:
Код
C++ (Qt)
sin(x+pi*i/4.0)
 
где x - случайная величина на интервале [0, pi/2].

Результаты для tiny_dnn и vanda (на боьшой выборке N = 480 испытаний):
Код
Bash
tiny_dnn:
=================================
Total p = 0.887292 +- 0.104493
Training time = 149152 ms
 
Total p = 0.867292 +- 0.119214
Training time = 148662 ms
 
Total p = 0.878542 +- 0.110621
Training time = 147957 ms
 
Total p = 0.876667 +- 0.112411
Training time = 148513 ms
 
Total p = 0.86875 +- 0.117555
Training time = 148443 ms
 
vanda:
=================================
Total p = 0.875 +- 0.113129
Total groups = 16
Training time = 0 ms
 
Total p = 0.878958 +- 0.110667
Total groups = 20
Training time = 0 ms
 
Total p = 0.861667 +- 0.125094
Total groups = 20
Training time = 0 ms
 
Total p = 0.870417 +- 0.117708
Total groups = 22
Training time = 0 ms
 
Total p = 0.873125 +- 0.114757
Total groups = 8
Training time = 0 ms
 
Примерно 87% правильных ответов. Статистически результаты у обоих вариантов практически не отличимы, а вот время обучения отличается на 6 порядков  Улыбающийся
Это круто  Улыбающийся
« Последнее редактирование: Октябрь 27, 2019, 18:23 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: 1 ... 3 4 [5]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.153 секунд. Запросов: 22.