下面是我尝试制作具有 2 个输入和 3 个输出的神经网络的代码。虽然训练给出了很好的结果,但当我尝试输入数字时,结果却相差甚远。在我做了一些小的改变之后,我观察到,即使它们从函数返回的输出应该是相同的,但结果却是不同的。我能想到的唯一解释是有一个错误。我正在谈论的功能是“训练”和“结果”。
这是代码:
from numpy import dot, exp, max, sum, random, array
class Network:
def __init__(self):
self.w = random.random((2,3))
def sigmoid(self, x, derivate = False):
if(derivate == True):
return x * (1 - x)
return 1 /(1 + exp(-x))
def train(self):
trainingInput = array([[0,0],[0,1],[1,0],[1,1]])
trainingOutput = array([[0,0,0],[0,1,0],[0,0,1],[1,0,0]])
n = 0
while(n < 10000):
exOutput = self.sigmoid(dot(trainingInput, self.w) - 0.1)
error = trainingOutput - exOutput
self.w += dot(trainingInput.T, error *
self.sigmoid(exOutput,True))
n += 1
return exOutput
def result(self):
trainingInput = array([[0,0],[0,1],[1,0],[1,1]])
exOutput = self.sigmoid(dot(trainingInput, self.w) - 0.1)
return exOutput
network = Network()
c = 0
d = 1
o = network.result()
output = network.train()
print(o)
print(output)
你应该先训练,然后检查结果。如果在训练前检查它,显然两个结果会有所不同。您可以在训练后再次计算结果,希望这将解决您的错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句