在 Python 中同时放电的神经元

Neurons firing simultaneously in Python

我正在 Python 上做一个神经元项目。

在之前的 post 中,我询问了如何让神经元相互激发。我用我爸爸的帐户 post,但我也只有我问了这个问题。我把所有的账户都写上了我的名字:|

如果还没有,请阅读

电路成功。我制作了一个名为“肌肉”的新 class,它在接收到来自神经元的信号时会弯曲。

但是有一个很大的缺陷:当我激活两个神经元,比如 N1 和 N2,它们连接到另一个神经元 N3,那么 N3 不会将它接收到的信号加起来 both N1 和 N2。相反,N3 在不同的时间分别进行它们。

我怎样才能克服这个问题?

我从 reddit 得到了这个答案。com/r/learnpython 正如你所推荐的。谢谢!

class Neuron:
  def __init__(self,name,threshold=3):
    self.name = name
    self.threshold = threshold
    self.in_signal = 0
    self.out_signal = 0
    self.connect_axon = []
    self.connect_dendrite = []

  def connect_to_neuron(self, neuron):
    self.connect_dendrite.append(neuron)
    neuron.connect_axon.append(self)

  def fire(self, strength):
    self.out_signal = strength
    print('neuron',self.name,'fired with strength',self.out_signal)

  def reset(self):
    self.in_signal = 0
    self.out_signal = 0

  def update(self):
    for neuron in self.connect_dendrite:
      self.in_signal += neuron.out_signal

    if self.in_signal >= self.threshold:
      self.out_signal =  self.in_signal
      print('neuron',self.name,'fired with strength',self.out_signal)


class Brain:
  def __init__(self):
    self.neurons = []

  def add_neuron(self, neuron):
    self.neurons.append(neuron)

  def update(self):
    for neuron in self.neurons:
      neuron.update()
    for neuron in self.neurons:
      neuron.reset()

n1 = Neuron('n1')
n2 = Neuron('n2')
n3 = Neuron('n3',threshold=5)

n3.connect_to_neuron(n1)
n3.connect_to_neuron(n2)

tiny_brain = Brain()
tiny_brain.add_neuron(n1)
tiny_brain.add_neuron(n2)
tiny_brain.add_neuron(n3)

n1.fire(4)
n2.fire(4)

tiny_brain.update()