class Neuron:
def __init__(self, inbound_neurons=[], label=''):
self.label = label
self.inbound_neurons = inbound_neurons
self.outbound_neurons = []
self.value = None
for n in self.inbound_neurons:
n.outbound_neurons.append(self)
def forward(self):
raise NotImplemented
class Input(Neuron):
def __init__(self):
Neuron.__init__(self)
def forward(self, value=None):
if value is not None:
self.value = value
class Add(Neuron):
def __init__(self, *inputs):
Neuron.__init__(self, inputs)
def forward(self):
for n in self.inputs:
self.value = self.value + n
Add()是类Neuron的子类,我在使用循环添加输入数组的所有元素时遇到了一些困难。
答案 0 :(得分:2)
class Add(Neuron):
def __init__(self, *inputs):
Neuron.__init__(self, inputs)
def forward(self):
self.value = 0
for n in self.inbound_neurons:
self.value = self.value + n.value
return(self.value)
功能'转发'在Class Add中有一个循环来汇总inbound_neurons的所有元素。
答案 1 :(得分:1)
这段代码应该是:
for n in self.inbound_neurons:
self.outbound_neurons.append(self)
self.inputs从未在您的班级中定义过。为了遍历输入,您必须:
def __init__(self, *inputs):
self.inputs = inputs
Neuron.__init__(self, inputs)
但是,输入看起来像是一个包含两个项目的列表,另一个列表,也可能是一个字符串。这些不会结合在一起。看起来您想要总计self.inbound_neurons
。
答案 2 :(得分:1)
它与您的问题无关,但非常重要:您不应将可变数据类型(作为列表)用于函数/方法默认值。
您的代码应该像这样更新:
class Neuron:
def __init__(self, inbound_neurons=None, label=''):
self.inbound_neurons = inbound_neurons or []
# ...
为什么你应该这样做,这里解释:"Least Astonishment" and the Mutable Default Argument