Java 人工智能投掷零点异常的训练
我对人工智能非常感兴趣,想创建自己的人工智能,所以我看了一些视频,找到了一个很好的库。 对于我的第一个ai,它非常简单。我这样做是为了掌握这个库,以及它在将来如何处理更复杂的事情。这个人工智能要做的就是得到四个小数字的输入,如果四个输入都是1,那么输出只有1。(不要担心AI和AIType类)这是代码,如果我做错了什么,请告诉我,因为我已经在很多地方查找了,但找不到任何东西:Java 人工智能投掷零点异常的训练,java,neural-network,nullpointerexception,artificial-intelligence,neuroph,Java,Neural Network,Nullpointerexception,Artificial Intelligence,Neuroph,我对人工智能非常感兴趣,想创建自己的人工智能,所以我看了一些视频,找到了一个很好的库。 对于我的第一个ai,它非常简单。我这样做是为了掌握这个库,以及它在将来如何处理更复杂的事情。这个人工智能要做的就是得到四个小数字的输入,如果四个输入都是1,那么输出只有1。(不要担心AI和AIType类)这是代码,如果我做错了什么,请告诉我,因为我已经在很多地方查找了,但找不到任何东西: AI aitest = new AI(AIType.FIRST_AI); DataSet ds = new
AI aitest = new AI(AIType.FIRST_AI);
DataSet ds = new DataSet(4,1);
ds.add(new double[]{0,0,0,0},new double[]{0});
ds.add(new double[]{0,0,0,1},new double[]{0});
ds.add(new double[]{0,0,1,0},new double[]{0});
ds.add(new double[]{1,1,0,0},new double[]{0});
ds.add(new double[]{1,0.1,1,3},new double[]{0});
ds.add(new double[]{1,1,1,1},new double[]{1});
ds.add(new double[]{1,1,1,1},new double[]{1});
ds.add(new double[]{0,1,2,5},new double[]{0});
Layer l = new Layer();
InputLayer il = new InputLayer(4);
aitest.getAI().getNN().setInputNeurons(il.getNeurons());
for(int ignored :new int[]{1,2,3,4}){
Neuron n = new Neuron();
for(Neuron all: aitest.getAI().getNN().getInputNeurons()) {
n.addInputConnection(all);
}
l.addNeuron(n);
}
aitest.getAI().getNN().addLayer(l);
aitest.getAI().train(ds);
它在最后一行抛出一个NPE,并出现以下错误:
Exception in thread "main" java.lang.NullPointerException
at org.neuroph.core.NeuralNetwork.learn(NeuralNetwork.java:297)
at me.ai.aicore.SuperAI.train(SuperAI.java:31) // these last two lines just call the .learn method
at me.ai.Core.main(Core.java:38)
(有更多的错误行,但它们并不相关)
产生此错误的neuroph(神经网络类)中的行标记为:
public void setWeights(double[] weights) {
int i = 0;
Iterator var3 = this.layers.iterator();
while(var3.hasNext()) {
Layer layer = (Layer)var3.next();
Iterator var5 = layer.getNeurons().iterator();
while(var5.hasNext()) {
Neuron neuron = (Neuron)var5.next();
// the line below is where the error comes from
for(Iterator var7 = neuron.getInputConnections().iterator(); var7.hasNext(); ++i) {
Connection conn = (Connection)var7.next();
conn.getWeight().setValue(weights[i]);
}
}
}
}
感谢所有的帮助
编辑:我添加了完整的stacktrace,但是除了第一个like之外的所有东西都是无用的,因为它只是调用方法的。顺便说一下,底部的代码块来自库。我更新了它以显示完整的方法给我们更多的代码。什么是
i
以及您在哪里声明和初始化了它?显示完整的堆栈跟踪请更新帖子以显示更多信息nullpoitnereException
仍然太多,堆栈跟踪只告诉我们它在哪一行。neuron
null吗?neuron.getInputConnections()是否为空?var7
null吗?我建议您打印出尽可能多的变量,以了解其中的值,从而了解哪些变量的行为不符合您的预期。