Resch-Said / yane

Yet Another Neuro Evolution
MIT License
0 stars 0 forks source link

Tick step, new forward order system and Connection system #40

Closed Resch-Said closed 11 months ago

Resch-Said commented 11 months ago

related to issue #39

Instead of doing a complete feedforward (i.e. once through the entire network), the user should also be able to perform each tick step by step.

image

image

For example, we set the input for I1 and I2.

yane.tick(input_data)

Now we fired once. That means, I1 got its input and fired to H3, H4 and O1. And I2 also fired to H4. Keep in mind they don't fire at the same time. If you insert input data, yane will just keep ticking until als inputs fired or in other word, it will tick the length of input data. So, if you only inserted [1], then it will only tick once even if you have more input neurons.

yane.tick()

No input data was inserted. H3, H4 and O1 got activated last time, so they will fire.

yane.tick(input_data)

and so on... In this case the input neurons will trigger last.

Using yane.tick() doesn't really have to prevent loops. The user can always extract the output. This could be useful for continuous systems like games.

For normal forward propagation, it will be pretty much the same but instead of every neuron being able to fire after getting some Input, we will stay with the forward order list and only allow each neuron to fire once.

That means you can't just train yane only with tick() and later use the forward propagation Method because they do have small differences.

If you train using tick() you must stay with it.

Rules forward order:

Rules tick order:

Resch-Said commented 11 months ago

We dropped the new connection system and instead we just improved the copy method. No more deepcopy and much faster.