尝试使用Neuroph框架训练神经网络时的StackOverFlowError

时间:2016-02-14 09:51:03

标签: java neural-network stack-overflow

我正在尝试使用Neuroph库训练神经网络,但是我收到了这个错误:

X-Forwarded-Proto

问题是,我使用相同的代码在另一个具有相同导入jar的项目中训练神经网络并且它正常工作。这是我用来创建和训练NN的代码:

44 [NeurophLearningThread] INFO org.neuroph.core.learning.LearningRule - Learning Started
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
    at java.lang.reflect.Method.invoke(Method.java:498)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
    at org.neuroph.util.NeurophArrayList.writeObject(NeurophArrayList.java:710)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

更新

我发现了问题所在。当我使用超过90个输入时,我得到上述错误。所以我的新问题是,如何用超过90个输入训练这个神经网络?

1 个答案:

答案 0 :(得分:2)

您可以使用JVM参数-Xss来增加程序可用的堆栈大小。

`java -Xss2048m ...`

表示您获得了2048Mb的堆栈。如果您从IDE运行此命令,则可以搜索以了解如何为特定IDE传递JVM参数。

我假设您的代码或库中没有错误,否则增加堆栈可能就不够了。