Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动编码器的实现_Java_Machine Learning_Backpropagation_Autoencoder - Fatal编程技术网

Java 自动编码器的实现

Java 自动编码器的实现,java,machine-learning,backpropagation,autoencoder,Java,Machine Learning,Backpropagation,Autoencoder,我正试图用Java自己实现一个自动编码器。从理论上,我了解到自动编码器基本上是一个对称网络 那么,如果我选择总共有5层,我需要在训练(反向传播)阶段使用9层还是5层就足够了 我一直在阅读理论,但它们太抽象,充满了数学公式,我无法通过谷歌获得任何实现细节 通常的做法是什么 自动编码器,在训练阶段,使用反向传播,试图获得与输入相似的输出,目标是最小化误差。如上图所示。上图中的层数为7,而训练后的实际层数为4。因此,在进行培训时,我是否可以仅用4个参数实现反向传播?如果是这样的话,我该怎么做呢?简单

我正试图用Java自己实现一个自动编码器。从理论上,我了解到自动编码器基本上是一个对称网络

那么,如果我选择总共有5层,我需要在训练(反向传播)阶段使用9层还是5层就足够了

我一直在阅读理论,但它们太抽象,充满了数学公式,我无法通过谷歌获得任何实现细节

通常的做法是什么


自动编码器,在训练阶段,使用反向传播,试图获得与输入相似的输出,目标是最小化误差。如上图所示。上图中的层数为7,而训练后的实际层数为4。因此,在进行培训时,我是否可以仅用4个参数实现反向传播?如果是这样的话,我该怎么做呢?

简单的反向传播对这么多层不起作用。由于所谓的消失梯度
pehenomen,具有两个以上隐藏层的网络将无法学到任何合理的东西。事实上,使用一个隐藏层可以获得最佳结果。所以在自动编码器的情况下,你应该有输入层,隐藏层和输出层。无需更多,通用近似定理清楚地表明,这对于任何问题都足够了


从面向对象的角度来看,这取决于你是否计划对不同类型的神经元重复使用这段代码,而神经元的类型指的是比不同的激活函数更深层的东西——不同的行为(随机神经元?);不同的拓扑(未完全连接的网络)。如果没有-将每个神经元建模为一个单独的对象是完全多余的。

我知道这一点……我计划使用RBMs进行预训练……同时,我这样做是为了获得实现的想法……我不确定我是否必须在训练中使用双倍的层数,还是在训练中使用正确的层数(双倍,因为我必须从输入中获取输入)无论您是否使用RBM都无关紧要-RBM也是(有效的)只能使用1个隐藏层进行培训。deep autoencoder的培训不是你所画的。请澄清我所问的实施细节……但Geoffry Hinton的这篇文章建议使用多个层……当我们在培训后实际需要4层时,你能告诉我是否应该总共使用7层吗?请参考t请回答我问题的最后一段……你的问题缺少很多方面。网络的目的是什么。它到底是如何训练的。总的来说,“展开”似乎是一个非常奇怪的想法自动编码器,尽管它的应用。在deeplearning4j.org上有一个自动编码器和受限Boltzmann机器的实现。介绍如下:deeplearning4j.org/restrictedboltzmannmachine.html