cmaron / CS-7641-assignments

CS 7641 - All the code
MIT License
158 stars 124 forks source link

Assignment 2 : Neural network bits fail with java.lang.IndexOutOfBoundsException #6

Open timuster opened 5 years ago

timuster commented 5 years ago

Running the following files with Jython throws an Index out of bounds error (when using CreditApprovalData or PenDigitsData).

$ jython NN-Backprop.py

Using seed 653091685

Error results for Backprop

Traceback (most recent call last): File "NN-Backprop.py", line 48, in main() File "NN-Backprop.py", line 38, in main train(BatchBackPropagationTrainer(data_set, classification_network, measure, rule), classification_network, File "/CS-7641-assignments/assignment2/base.py", line 132, in train oa.train() at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:372) at java.base/java.util.ArrayList.get(ArrayList.java:440) at func.nn.Layer.getNode(Layer.java:43) at func.nn.Layer.setActivations(Layer.java:60) at func.nn.LayeredNetwork.setInputValues(LayeredNetwork.java:53) at func.nn.backprop.BatchBackPropagationTrainer.train(BatchBackPropagationTrainer.java:46) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564)

java.lang.IndexOutOfBoundsException: java.lang.IndexOutOfBoundsException: Index 8 out-of-bounds for length 8 `

timuster commented 5 years ago
timuster commented 5 years ago

I figured that this can be resolved by properly setting the input layer size in the specific files... I'll let this issue stay 'open' in case you'd like help updating the README (post a comment and I can create a pull-request).

Thanks for the project, Chad!

cmaron commented 5 years ago

If I'm following correctly you're saying the INPUT_LAYER and OUTPUT_LAYER settings have to be changed for the data sets and that's not clear in the readme? If so feel free to open a PR. An alternative might be to update base.py in order specify these settings in one place, similar to how DS_NAME is set there. In fact all those layer settings should probably be in base.py...

swyxio commented 5 years ago

agree, ran into this exact issue. thanks for filling the issue @timuster. happy to help move up those settings once i finish catching up on this dang assignment...

cmaron commented 5 years ago

@timuster and @sw-yx I've updated the readme, let me know if you have more to add.