2017-01-14 4 views
1
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クラスのサブクラスです。入力配列のすべての要素を追加するにはいくつかの問題があります。Python:クラスのすべての要素を集計する方法

+0

これらの難点について詳しく説明できますか? –

+1

あなたが見ている問題が、予想よりも多くのアウトバウンドニューロンを持っているという場合は、[this]の最初のセクションを参照してください(http://amir.rachum.com/blog/2013/07/06/python-common-newbie-間違いpart-1 /)ブログ記事。 –

答えて

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) 

クラスの追加で「前進」関数は、合計するループを持っていますinbound_neuronsのすべての要素。

1

Firtオフのコード行は次のようになります。

for n in self.inbound_neurons: 
     self.outbound_neurons.append(self) 

self.inputsは、あなたのクラスで定義されていませんでした。入力をループするためには、あなたが持っている必要があるだろう:入力が2つの項目、別のリストと、多分それの文字列を持つリストになるよう

def __init__(self, *inputs): 
     self.inputs = inputs 
     Neuron.__init__(self, inputs) 

をしかし、それが見えます。これらは一緒に結ばれません。代わりに、self.inbound_neuronsの合計を合計したいと思うように見えます。

+0

ありがとう、これは良い答えです。私はPythonでクラスとサブクラスを使用することに慣れていないので、サブクラスの "入力"のすべての要素を加算する必要があります。 –

1

あなたの質問には関係ありませんが、非常に重要です:関数/メソッドのデフォルトのために、リストとして変更可能なデータ型を使用すべきではありません。

あなたのコードは次のように更新する必要があります:あなたはこの方法を行う必要がありますなぜ

class Neuron: 
    def __init__(self, inbound_neurons=None, label=''): 
     self.inbound_neurons = inbound_neurons or [] 
     # ... 

がここで説明されています"Least Astonishment" and the Mutable Default Argument

関連する問題