文章 "神经网络变得轻松(第五部分):OpenCL 中的多线程计算" - 页 5

 
Dmitriy Gizlyk #:

您好,您不需要安装 .cl 文件。您只需将其加载到主程序中,就像字符串一样


您好!
谢谢你的快速回复。我想真正的问题是我的系统不支持 OpenCL。这是否意味着我以后不能继续这个系列了?


编辑(已解决):虽然 AMD 似乎已经不再支持 OpenCL,但有一个免费的 Microsoft OpenCL 和 OpenGL 兼容包,现在可以编译了。

 

您好,德米特里,非常感谢您的出版物,它们对我提高发展领域的知识水平帮助很大。如果能得到您的建议,我将不胜感激。我目前正在学习关于多线程计算的 文章 (#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 文件(从下载)并将其粘贴到 Meta Editor 的 "include "文件夹中。编译器就会找到它。

谢谢

 

在文件 "NeuroNet.mqh "的方法 "bool CNeuron::feedForward(CLayer *prevLayer) "中,有这样一行

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

我不明白为什么激活函数的结果是从 -18 到 18,难道不应该是从 -1 到 1 或从 0 到 1 吗?

 
Gexon (MathMin(MathMax(sum,-18),18));"

我不明白为什么激活函数的结果是从 -18 到 18,难道不应该是从 -1 到 1 或从 0 到 1 吗?

这限制的是激活函数的参数,而不是它的值。添加该参数是为了避免激活函数的梯度值接近 0。

 
Dmitriy Gizlyk 市场条件 下的网络性能。

请问,recentAverageSmoothingFactor = 10000 是基于 2 年吗?

365 天 * 2 年 * 24 小时 = 17520 小时蜡烛(样本长度)。


我使用的是 1 年的样本,那么我需要减少到 8760 个(365 * 24 = 8760)?

在测试中,我的 dForecast 从 0 跳到 23,误差为 0.32 且保持不变,这是正常现象还是因为 recentAverageSmoothingFactor 有误?

 

你好,迪米特里、

我很喜欢你的文章,我正在着手写。

CBuffer 类在哪里?我找不到。

致以最诚挚的问候、

本杰明

 
Benjamin Doerries # :

你好,迪米特里、

我很喜欢你的文章,我正在着手写。

CBuffer 类在哪里?我找不到。

致以最诚挚的问候、

本杰明

没关系,我找到了解决方案,可以按照您在其他文章中的描述,将其更改为 CBufferFloat :)

 
运行时,我还有其他 OpenCl 设备没有运行。我可以使用多个设备进行并行计算吗?