Обсуждение статьи "Нейросети — это просто (Часть 5): Многопоточные вычисления в OpenCL" - страница 5

 
Dmitriy Gizlyk #:

Здравствуйте, вам не нужно устанавливать файл .cl. Вы просто загружаете его в основную программу, как строку


Привет!
Спасибо за быстрый ответ. Я думаю, что реальная проблема заключается в том, что моя система не поддерживает OpenCL. Значит ли это, что я не смогу продолжить эту серию дальше?


Edit(SOLVED): Хотя, похоже, AMD прекратила поддержку OpenCL, есть бесплатный пакет Microsoft OpenCL и OpenGL Compatibility Pack, и теперь он компилируется.

 

Добрый день, Дмитрий! Большое спасибо за ваши публикации, которые мне очень помогли повысить свои знания в области разработки. Буду очень пизнателен за ваш совет. Сейчас изучаю статью про многопоточные вычисления (№5). Попробовал запустить из вложений уже скомпелированный файл, он не запускается и крашится весь терминал полностью. Попробовал пересобрать из исходников, итог получается тотже, что наталкивает на мысль, что это не из-за исходников. Попробовал погонять на тестере: крашится когда вызывается метод CNet::backPropOCL на строке 1486 (neuron.calcHiddenGradients(nextLayer.At(0));), а там уже на предопределённой функции из каталога OpenCL (CLExecute(kernel_handle,work_dim,work_offset,work_size)). Самое интересное, что в логах нет никакой ошибки просто тестер также крашится. Может подскажите из-за чего это может быть? Спасибо.

 
Aleksandr Seredin #:

Добрый день, Дмитрий! Большое спасибо за ваши публикации, которые мне очень помогли повысить свои знания в области разработки. Буду очень пизнателен за ваш совет. Сейчас изучаю статью про многопоточные вычисления (№5). Попробовал запустить из вложений уже скомпелированный файл, он не запускается и крашится весь терминал полностью. Попробовал пересобрать из исходников, итог получается тотже, что наталкивает на мысль, что это не из-за исходников. Попробовал погонять на тестере: крашится когда вызывается метод CNet::backPropOCL на строке 1486 (neuron.calcHiddenGradients(nextLayer.At(0));), а там уже на предопределённой функции из каталога OpenCL (CLExecute(kernel_handle,work_dim,work_offset,work_size)). Самое интересное, что в логах нет никакой ошибки просто тестер также крашится. Может подскажите из-за чего это может быть? Спасибо.

Добрый день, Александр.
Если я правильно понимаю, то крашится при выполнении OpenCL программы. Попробуйте запустить в режиме отладки и посмотреть на размеры передаваемых буферов. Возможно ошибка в выходе за пределы массива в OpenCL программе.
 

Привет, Тобиас,

Просто скопируйте файл .cl (из загрузок) и вставьте его в папку "include" в Meta Editor. Компилятор найдет его.

Будьте здоровы

 

В методе "bool CNeuron::feedForward(CLayer *prevLayer)", файла "NeuroNet.mqh", есть строка:

"outputVal=activationFunction(MathMin(MathMax(sum,-18),18));"

непонятно почему результат активационной функции от -18 до 18, разве не должно быть от -1 до 1 или от 0 до 1?

 
Gexon #:

В методе "bool CNeuron::feedForward(CLayer *prevLayer)", файла "NeuroNet.mqh", есть строка:

"outputVal=activationFunction(MathMin(MathMax(sum,-18),18));"

непонятно почему результат активационной функции от -18 до 18, разве не должно быть от -1 до 1 или от 0 до 1?

Это ограничивает аргумент функции активации, а не её значение. Добавлено, чтобы не  загонять градиент функции активации в значения близкие к 0. 

 
Dmitriy Gizlyk #:

Если выборка меньше, то нужно уменьшить. Увеличивать есть смысл, если Вы хотите видеть ошибку по всей выборке.
Я использую жесткое значение, чтобы оценивать работу сети в разных рыночных условиях.

Скажи пожалуйста, recentAverageSmoothingFactor = 10000 это с расчетом на 2 года?

365 дней * 2 года * 24 часа = 17 520 часовых свечей(длина выборки).


Я использую выборку в 1 год, тогда мне нужно уменьшить до 8 760 (365 * 24 = 8 760)?

В тестах у меня dForecast скачет от 0 до 23, а ошибка как была 0,32 так и остается постоянной, это нормально или это от того что recentAverageSmoothingFactor не тот?😀

 

Привет, Дмитрий,

Мне нравятся ваши статьи, и я начинаю работать над ними.

Где находится класс CBuffer? Я не могу его найти.

С наилучшими пожеланиями,

Бенджамин

 
Benjamin Doerries # :

Здравствуйте, Дмитрий,

Мне нравятся ваши статьи, и я начинаю работать над ними.

Где находится класс CBuffer? Я не могу его найти.

С наилучшими пожеланиями,

Бенджамин

Неважно, я нашел решение, чтобы изменить его на CBufferFloat, как описано вами в других статьях :)

 
Во время работы у меня есть другие устройства OpenCl, которые не работают. Могу ли я использовать несколько устройств для параллельных вычислений?