переменная видимость / область видимости в коде Python, который реализует ANN - PullRequest
0 голосов
/ 24 мая 2018

Я сам реализую искусственную нейронную сеть (ANN), используя пример кода [1].Хотя в принципе мне ясно, как работает код ANN (я делал это раньше на других языках), у меня больше проблем с синтаксисом / логикой python: в строке 181 сеть обучается 10 000 взаимодействий, но какпрогресс сохранен, потому что функция «backpropagate» (строка 39) не возвращает сеть, а переменная «network» также не является глобальной переменной?Также в функции «backpropagate» переменная «network» не обновляется, но я предполагаю, что это потому, что такие переменные, как «output_neuron» (строка 48), указаны по ссылке?Но это все еще не объясняет, как «сеть» сохраняет свой прогресс за пределами «обратного распространения»?

[1] https://github.com/joelgrus/data-science-from-scratch/blob/master/code-python3/neural_networks.py

1 Ответ

0 голосов
/ 24 мая 2018

Вероятно, вам следует начать с более базового кода .

Это демонстрирует, что происходит

>>> def modify(lst):
...     lst.append('element')
... 
>>> network = []
>>> network
[]
>>> modify(network)
>>> network
['element']
>>> modify(network)
>>> network
['element', 'element']

network - это изменяемый объект, который изменяется внутри backpropagate().Там нет необходимости return.Вы можете думать об этом как о передаче по ссылке (технически говоря, в Python нет передачи по значению как таковой - см. этот пост ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...