Обсуждение статьи "Нейросети — это просто (Часть 5): Многопоточные вычисления в OpenCL" - страница 4
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Можно ли сделать LSTM-сеть c OpenCL? Если да, то с какой версией NeuroNet.mqh лучше? С версией из этой статьи выдается ошибка "Error of execution kernel CaclOutputGradient: 0". А с версией из статьи 7 похоже вообще OpenCL не используется, если создавать нейроны defNeuronLSTM. А defNeuronLSTMOCL не реализован.
Ясно, спасибо. Просьба также уточнить: recentAverageSmoothingFactor = 10000 - задано жестко. Надо ли менять его на количество значений в обучающей выборке?
Если выборка меньше, то нужно уменьшить. Увеличивать есть смысл, если Вы хотите видеть ошибку по всей выборке.
Я использую жесткое значение, чтобы оценивать работу сети в разных рыночных условиях.
Дмитрий, не могу понять, почему не происходит обновление значений в массиве. При этом никаких ошибок нет - выход из метода по false не происходит. Можете проверить это у себя?
Дмитрий, не могу понять, почему не происходит обновление значений в массиве. При этом никаких ошибок нет - выход из метода по false не происходит. Можете проверить это у себя?
Алексей, метод update наследуется от класса CArrayDouble и записывает данные в массив, но не передает их в буфер GPU.
В тоже время, при вызове метода getGradient, происходит считывание данных с буфера GPU, что и перезатирает внесенные ранее изменения.
Алексей, метод update наследуется от класса CArrayDouble и записывает данные в массив, но не передает их в буфер GPU.
В тоже время, при вызове метода getGradient, происходит считывание данных с буфера GPU, что и перезатирает внесенные ранее изменения.
Добрый день, Дмитрий! Большое спасибо за ваши публикации, которые мне очень помогли повысить свои знания в области разработки. Буду очень пизнателен за ваш совет. Сейчас изучаю статью про многопоточные вычисления (№5). Попробовал запустить из вложений уже скомпелированный файл, он не запускается и крашится весь терминал полностью. Попробовал пересобрать из исходников, итог получается тотже, что наталкивает на мысль, что это не из-за исходников. Попробовал погонять на тестере: крашится когда вызывается метод CNet::backPropOCL на строке 1486 (neuron.calcHiddenGradients(nextLayer.At(0));), а там уже на предопределённой функции из каталога OpenCL (CLExecute(kernel_handle,work_dim,work_offset,work_size)). Самое интересное, что в логах нет никакой ошибки просто тестер также крашится. Может подскажите из-за чего это может быть? Спасибо.
Добрый день, Дмитрий! Большое спасибо за ваши публикации, которые мне очень помогли повысить свои знания в области разработки. Буду очень пизнателен за ваш совет. Сейчас изучаю статью про многопоточные вычисления (№5). Попробовал запустить из вложений уже скомпелированный файл, он не запускается и крашится весь терминал полностью. Попробовал пересобрать из исходников, итог получается тотже, что наталкивает на мысль, что это не из-за исходников. Попробовал погонять на тестере: крашится когда вызывается метод CNet::backPropOCL на строке 1486 (neuron.calcHiddenGradients(nextLayer.At(0));), а там уже на предопределённой функции из каталога OpenCL (CLExecute(kernel_handle,work_dim,work_offset,work_size)). Самое интересное, что в логах нет никакой ошибки просто тестер также крашится. Может подскажите из-за чего это может быть? Спасибо.
Если я правильно понимаю, то крашится при выполнении OpenCL программы. Попробуйте запустить в режиме отладки и посмотреть на размеры передаваемых буферов. Возможно ошибка в выходе за пределы массива в OpenCL программе.
В методе "bool CNeuron::feedForward(CLayer *prevLayer)", файла "NeuroNet.mqh", есть строка:
"outputVal=activationFunction(MathMin(MathMax(sum,-18),18));"
непонятно почему результат активационной функции от -18 до 18, разве не должно быть от -1 до 1 или от 0 до 1?