"新神经 "是MetaTrader 5平台的一个开源神经网络引擎项目。 - 页 73

 
yu-sha:

预处理程序正是为了这个目的

无论你有2个还是100个神经元,文件看起来都一样。

好吧,没有人阻止你用图形来做 - 只要写一个GUI并使用它。

好吧,我们不要砍掉肩膀,让我们用清晰的线条把它摆出来。这并不是说对其他人也一样,但对我来说,我上面阐述的加载方式在加载算法上是很明显的。

读取一个字符串,初始化3个层类型对象。

我们读取第一行,然后调用第一层对象,构建层类型输入,初始化 2个神经元阵列

读取第二行,然后调用第二个对象层,构建层类型mlp,初始化2个神经元的数组。

读取第三行,然后调用第二层对象,构建mlp层类型,初始化神经元阵列为1。

由于层数为3,我们在第三条线上完成构建,并分配连接。

要做到这一点,我们通过表并调用所需的神经元,如果表包含1,则告诉它们链接。

该算法在xml中如何工作?

ZS和主要的优点是,由于连接表是二进制的,所以它是完全可绑定的。 8个神经元的表适合于一个ulong。诚然,一般来说,进入森林越远的游击队越厚实,有大量神经元的尺寸计算为

X=N*N/8

其中N是神经元的数量。

X是字节数。

 

劣势

  • XML语法是多余的。[8]
  • 一个XML文档的大小明显大于相同数据的二进制表示。在粗略的估计中,这个系数的值被认为是1个数量级(10的系数)。
  • XML文档的大小明显大于其他基于文本的数据传输格式(如JSON[4]YAML协议缓冲区)的文档,尤其是为特定使用情况优化的数据格式。
  • XML冗余会影响应用程序的效率。储存、处理和传输数据的成本增加。
  • XML包含元数据(关于字段名、类名、结构嵌套),同时,XML被定位为一种开放的系统通信语言。当在系统之间传输大量相同类型(相同结构)的对象时,重复传输元数据是没有意义的,尽管它包含在XML描述的每个实例中。
  • 对于大量的任务,你不需要XML语法的全部力量,可以使用更简单、更有效的解决方案。

对剽窃行为表示歉意。
 

我建议将XML作为存储配置、网络、设置的标准。

而且只在初始化/存储阶段需要。

在工作流程的过程中,甚至在学习过程中,不存在XML的问题

她.人
对剽窃行为表示歉意。

是的,但由于某些原因,像甲骨文、微软这样的怪兽......。咬紧牙关把他们的 "二进制"(通常是商业)标准推开,转而采用开放标准

减去10MBytes的XML对现代计算机来说是没有问题的

100MBytes的MS Word .docx文件并不令人生畏?

如果问题是从XML文件中下载一个网络,那么在这样的硬件上进行训练是根本不现实的--任务的复杂性是不可比拟的。

 
yu-sha:

我建议将XML作为存储配置、网络、设置的标准。

而且只在初始化/存储阶段需要。

在工作流程的过程中,甚至在学习阶段更是如此,这不是关于XML

考虑一下:你的文件在xml中是916字节,在二进制表示中是64字节,即使你不点击头。

7个标题变量+每个表1个=8个ulong*8字节=64个

 
Urain

看,你的xml文件是916字节,而二进制表示是64字节,即使你不点击头。

7个标题变量+每个表1个=8个ulong*8字节=64个


为了打开论坛的这个页面,我在互联网上至少抽了一百多KB。

现在是2012年,我已经很久没有使用字节 这样的测量单位了))

P.S.

我只是提出了我的方法--由公众来决定。

 
莎。

我建议将XML作为存储配置、网络、设置的标准。

而且只在初始化/存储阶段需要。

在工作流程的过程中,甚至在培训的过程中,这与XML无关。

为了优化网络结构,有必要(临时)改变神经元和连接的数量。

有可能做到这一点吗?

如果你不介意,请对你的代码进行评论,如果没有任何评论,要理解别人的代码可能需要太长时间。谢谢你。

 
her.human:

为了优化网络的结构,有必要(即时)改变神经元和连接的数量。

是否有可能做到这一点?

如果不难,请对你的代码进行评论,你知道,没有评论的话,理解别人的代码需要太长时间。谢谢你。

这是一个培训问题。潜在地,这是可能的,但我还没有在实践中使用。

通常,在学习过程中,网络结构不会发生变化--只有适应性参数会发生变化。

你对问题的定义已经是一个元水平了,要训练一个架构师来改变网络结构,这样产生的网络在学习上会比别人更成功。

代码 "按原样 "发布--为我自己做的,像往常一样,很匆忙,所以请原谅我。

从好的方面来说,在整个项目 完成后,那里的一切都应该由骨头来重建。

 
yu-sha:

我下载了至少一百个字节来打开论坛的这个页面。

现在是2012年,我已经很久没有使用字节 这样的测量单位了))

P.S.

我只是提供了我的版本--由公众来决定。

让我们做一个实验,为1000个神经元创建一个xml加载器,每个神经元有100个链接,并公布文件大小,结构随便你。

我可以直接用膝盖计算出我的变体有多少空间,1000*1000/8=~125KB,而你的不能,所以我无法比较...

如果你的版本会有可接受的尺寸,为什么不呢。

 
Urain

不是这个问题,内存,在GPU上将很难实现对象逻辑的扭曲,我有一个相当好的想法,如何实现NS,作为一个复杂的对象的互动,其中有GPU计算的功能(这是关于微观层面),但我无法想象这个复杂的对象代码那些整个NS如何滑到GPU作为几个FF的不同集权(宏观层面)?

这个问题是反问句,尽管如果有人提出,我不介意听听。

这就是为什么选择了CUDA而不是更常见的OpenCL的原因。

CUDA代码是面向对象的,你可以通过比特传递在CPU上生成的一个对象

有一些微妙的问题,但都可以得到解决

 
yu-sha:

这就是为什么选择CUDA而不是更常见的OpenCL的原因。

CUDA中的代码是面向对象的,你可以将CPU上形成的对象进行比特传递

有一些微妙的问题,但所有这些问题都可以得到解决

我不是这方面的专家,我相信你,这将是好事。