我正在尝试在Python上创建一个neiron网络。我已经做了两个类:Neiron(它是隐形Neiron的类似物)和InputNeiron。输入Neiron工作正常,但Neiron不工作。 问题是,在Operate()之后,这个Neiron的输入发生了变化。我怎样才能修好它?它是由什么引起的(我是编程新手,不是以英语为母语的人:D) 代码如下:
import random
import math
class Neiron():
Input = 0
TargetNeiron = {}
def Func(self, x):
return (1/(1+ math.exp(-1*x)))
def __init__(self, *neirons):
for neiron in neirons:
self.TargetNeiron[neiron] = random.triangular(0,100)
def Operate(self):
a = self.Func(self.Input)
print(a)
for neiron in self.TargetNeiron:
neiron.Input = neiron.Input + (self.TargetNeiron[neiron] * a)
class InputNeiron(Neiron):
def Func(self, x):
if str(type(x)) == "<class 'str'>":
return 1;
else:
if x < 1:
return x;
else:
return 1/x;
b = Neiron()
a = Neiron(b);
c = InputNeiron(b,a)
try:
c.Input = float(input('Input = '))
except:
c.Input = 1;
print('target Neirons of c, first b, second a:',c.TargetNeiron)
print('Input of a before c.Operate:', a.Input)
print('Input of b before c.Operate:', b.Input)
c.Operate()
print('Input of a after c.Operate:', a.Input)
print('Input of b after c.Operate:', b.Input)
a.Operate()
print('Input of a after a.Operate:', a.Input)
print('Input of b after a.Operate:', b.Input)
Neiron(a)或InputNeiron(a)表示该Neiron将连接到a。 TargetNeirons是一本包含{neiron:synaptic multiplier}paars的字典。Func是一个特殊函数。她对Neiron和InputNeiron是不同的
在每次调用
n.Operate()
之后,Neiron
的Input
字段发生变化的原因是这种代码的平静,它改变了它至于“我如何修复它?”我想如果您只想保持c的输入不变,您可以覆盖
InputNeiron
类的Operate
函数,否则您必须更改Neiron
类中的函数Operate
以保持neiron.Input
不变一般来说,我强烈建议您查看人工神经网络的现有实现,例如scikit learn
希望这有帮助
相关问题 更多 >
编程相关推荐