当前位置: 首页 > 知识库问答 >
问题:

Elman网络未停止

卫嘉谊
2023-03-14

我对异或算子的Elman网络训练并没有停止,它运行到数百万次迭代中。任何帮助都将不胜感激!

package org.encog.example;

import org.encog.Encog;
import org.encog.engine.network.activation.ActivationSigmoid;
import org.encog.ml.train.MLTrain;
import org.encog.neural.data.NeuralDataSet;
import org.encog.neural.data.basic.BasicNeuralDataSet;
import org.encog.neural.networks.BasicNetwork;
import org.encog.neural.networks.training.propagation.back.Backpropagation;
import org.encog.neural.pattern.ElmanPattern;

public class XORRNN {

    // 4 row, 2 column
    public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 },
            { 0.0, 1.0 }, { 1.0, 1.0 } };

    // 4 row, 1 column
    public static double XOR_IDEAL[][] = { { 0.0 }, { 1.0 }, { 1.0 }, { 0.0 } };

    public static void main(String[] args) {

        //create Elman RNN
        ElmanPattern elmanPattern = new ElmanPattern();
        elmanPattern.setInputNeurons(2);
        elmanPattern.addHiddenLayer(4);
        elmanPattern.setOutputNeurons(1);
        elmanPattern.setActivationFunction(new ActivationSigmoid());
        BasicNetwork network = (BasicNetwork) elmanPattern.generate();

        //read training data
        NeuralDataSet trainingSet = new BasicNeuralDataSet(XOR_INPUT, XOR_IDEAL);

        //set training method
        MLTrain train = new Backpropagation(network, trainingSet, 0.000001, 0.0);


        //training
        int epoch = 1;

        do{
            train.iteration();          
            System.out.println("Iteration: " + epoch + ", Error: " + train.getError());
            epoch ++;
        }while(train.getError() > 0.01);

        //shut down
        Encog.getInstance().shutdown();
    }
}

共有1个答案

袁华清
2023-03-14

如果你想训练一些不是时间序列的东西,试着使用前馈神经网络。你不会很成功地使用一个Elman和4个训练集元素。如果您想要一个如何构造Elman的异或数据的示例,请参阅以下内容:

https://github.com/encog/encog-java-examples/blob/master/src/main/java/org/encog/examples/neural/recurrent/elman/elmanxor.java

 类似资料:
  • 我正在使用Encog框架对Elman和/或Jordan ANN进行实验。我正在尝试编写自己的代码,但正在研究Encog是如何实现的。我看到了时间的反向传播是如何更新权重的,但是上下文神经元是如何更新的呢?当计算神经网络的输出时,这些值似乎会随机波动。这些值如何使简单的递归神经网络能够随着时间的推移识别输入数据中的模式?

  • (编辑)我想将GKE吊舱连接到Atlas。 我有一个Atlas db,带有一个连接到GCP专有网络的专有网络对等连接。我正在尝试运用我在这些图坦卡门中学到的东西: 配置VPC网络对等互连 控制对专有网络的访问 当我查看VPC网络对等互连时 但是,可以预见的是,结果是一样的。 从gcloud shell我做: 并获得: 在GKE中,我创建了一个具有计算网络管理员角色的服务帐户,但不确定如何将其链接到

  • 前几节介绍的LeNet、AlexNet和VGG在设计上的共同之处是:先以由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。其中,AlexNet和VGG对LeNet的改进主要在于如何对这两个模块加宽(增加通道数)和加深。本节我们介绍网络中的网络(NiN)[1]。它提出了另外一个思路,即串联多个由卷积层和“全连接”层构成的小网络来构建一个深层网络。 NiN块 我们知道,卷积层

  • 问题内容: 我使用以下JavaScript代码打开了网络摄像头: 是否有任何JavaScript代码可停止或关闭网络摄像头?谢谢大家。 问题答案: 编辑 由于最初发布了此答案,因此浏览器API已更改。在传递给回调的流上不再可用。开发人员将必须访问组成流(音频或视频)的轨道,并分别停止每个轨道。 示例(从上面的链接): 浏览器支持可能有所不同。 原始答案 在成功回调中为您提供一个流,您可以调用该流以

  • 在 libuv 中,网络编程与直接使用 BSD socket 区别不大,有些地方还更简单,概念保持不变的同时,libuv 上所有接口都是非阻塞的。它还提供了很多工具函数,抽象了恼人、啰嗦的底层任务,如使用 BSD socket 结构体设置 socket 、DNS 查找以及调整各种 socket 参数。 在网络I/O中会使用到uv_tcp_t和uv_udp_t。 note 本章中的代码片段仅用于展示

  • 1 三次握手 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分。客户端把这段连接的序号设定为随机数 A。 服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK 的确认码应为 A+1,SYN/ACK 包本身又有一个随机序号 B。 最后,客户端再发送一个ACK。当服务端受到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。此时包序号被设定为收到的确认号 A+1