gpt4 book ai didi

java - 神经网络处理不同宽度数组数据时出错

转载 作者:行者123 更新时间:2023-12-02 05:47:13 25 4
gpt4 key购买 nike

我在将“输入”数组传输到神经网络进行学习时出错。我需要教一个神经网络一个数组,其中某些行中有不同数量的列。我将神经元的数量分配给数组行的最大值。我使用 encog 库。是否有可能做到这一点?请帮忙,因为我是这方面的初学者。

我尝试减少神经网络中的神经元数量,但没有使用数组中的一些数据。我试图找到一些这方面的信息,但没有成功。

//array with data for training
public static double[][] INPUT = {
{1.0, 8.0, 13.0, 0,0, 12.0, 6.0, 17.0, 24.0, 440.0, 6.0, 0.0, 19.0,96.0},
{1.0, 0,0, 0.0, 4.0, 52.0, 6.0, 0.0, 5.0, 6.0, 7.0, 150.0, 5.0, 1.0},
{0.0, 0.0, 0.0, 0.0, 0.0, 413.0, 0.0, 117.0, 0.0, 0.0, 0.0},
{1.0, 1.0, 1.0, 7.0, 0.0, 3.0, 7.0, 167.0, 1.0, 7.0, 0.0, 1.0, 44.0},
{0.0, 1.0, 5.0, 5.0, 5.0, 6.0, 0.0, 4.0, 186.0, 13.0, 0.0, 1.0}
};

//ideal data for neural network
public static double[][] IDEAL = {{0.9, 0.1}, {0.3, 0.7}, {0.2, 0.8},
{1.0, 0.0}, {0.4, 0.6}};

这里是神经网络结构

BasicNetwork network = new BasicNetwork();
network.addLayer(new BasicLayer(null, true, 13));
network.addLayer(new BasicLayer(new ActivationSigmoid(), true, 9));
network.addLayer(new BasicLayer(new ActivationSigmoid(), true, 2));
network.getStructure().finalizeStructure();
network.reset();

MLDataSet trainSet = new BasicMLDataSet(INPUT, IDEAL);
MLTrain train = new ResilientPropagation(network, trainSet);

int epoch = 1;

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

最佳答案

上面您将输入神经元计数设置为 13,因此 Encog 将要求您始终提交 13 个输入。

如果不知道数据代表什么,就很难回答。各列代表什么?为什么有时会有不同的金额?他们缺少值(value)观吗?如果它们是缺失值,那么您应该始终使用 13 的输入 vector ,并找到一种方法来近似有意义的缺失值。

简单地省略缺失值将会出现问题,因为如果您只是删除缺失值并将所有内容向左移动,则可能会将值传递到错误的输入神经元。

如果数组的长度不同,因为它们是某种不同序列长度的时间序列数据,则您需要使用不同类型的编码或时间序列类型模型(前馈神经网络除外)。

关于java - 神经网络处理不同宽度数组数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com