下面我有一些代码,试图制作一个有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)
答案 0 :(得分:0)
你应该先训练,然后检查结果。 如果你在训练前检查,显然有两个结果会有所不同。 你可以再次计算训练后的结果,希望这能解决你的错误。