I decided not to remove neurons with empty outputs since they can contribute to multi-generation improvements, but they can really clog up prediction with completely useless calculations when running high generation counts. I'm thinking of adding some sort of "drift" that causes hanging neurons to disappear after a certain number of successive mutations.
Another possibility I considered was just building some runtime mirror structure that optimizes the network and removes such things, but I think it'd be an unnecessary amount of API change for such a minimal increase in performance. Maybe this optimization could be included when implementing the structure in #99.
I decided not to remove neurons with empty outputs since they can contribute to multi-generation improvements, but they can really clog up prediction with completely useless calculations when running high generation counts. I'm thinking of adding some sort of "drift" that causes hanging neurons to disappear after a certain number of successive mutations.
Another possibility I considered was just building some runtime mirror structure that optimizes the network and removes such things, but I think it'd be an unnecessary amount of API change for such a minimal increase in performance. Maybe this optimization could be included when implementing the structure in #99.