实现ANN的python代码中的变量可见性/范围

2024-05-12 00:59:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用[1]的示例代码自行实现一个人工神经网络(ANN)。虽然原则上我很清楚ANN代码是如何工作的(我以前用其他语言做过),但python语法/逻辑有更多问题: 在第181行中,网络经过10000次迭代的训练,但是由于函数“backpropagate”(第39行)不返回网络,并且变量“network”似乎也不是全局变量,因此如何保存进度?同样在函数“backpropagate”中,变量“network”没有更新,但我想这是因为运行变量,如“output_neuron”(第48行)是通过引用的?但这仍然不能解释“网络”如何在“反向传播”之外保存其进步

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


Tags: 函数代码https网络语言示例output语法
1条回答
网友
1楼 · 发布于 2024-05-12 00:59:35

您可能应该从更多的basic code开始

这说明了会发生什么

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

network是一个可变对象,在backpropagate()内进行了适当修改。没有必要return。您可以将其视为通过引用传递(从技术上讲,Python中没有这样的通过值—请参见this blog post

相关问题 更多 >