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 () es la subclase de la clase Neuron, he encontrado algunas dificultades para usar el bucle para agregar todos los elementos de la matriz de entradas.

1
Jeremy_Tamu 14 ene. 2017 a las 10:45

3 respuestas

La mejor respuesta
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)

La función 'forward' en Class Add tiene un ciclo para sumar todos los elementos de inbound_neurons.

2
FortranFun 16 ene. 2017 a las 03:45

Primero, esta línea de código debería ser:

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

Self.inputs nunca se definió en su clase. Para recorrer las entradas, deberías tener:

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

Sin embargo, parece que las entradas serían una lista con dos elementos, otra lista y tal vez una cadena en ella. Estos no se concatenarán juntos. Parece que, en cambio, desea sumar el total de self.inbound_neurons.

1
Michael Ericson 14 ene. 2017 a las 07:57

No está relacionado con su pregunta, pero es MUY importante: NO debe usar tipos de datos mutables (como lista) para los valores predeterminados de función / método.

Su código debe actualizarse así:

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

Aquí se explica por qué debe hacerlo de esta manera: "Menos asombro" y el valor predeterminado mutable Argumento

1
Community 23 may. 2017 a las 10:29