为什么我的2个函数不能给出相同的结果?

时间:2018-02-25 15:26:35

标签: python neural-network

下面我有一些代码,试图制作一个有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)

1 个答案:

答案 0 :(得分:0)

你应该先训练,然后检查结果。 如果你在训练前检查,显然有两个结果会有所不同。 你可以再次计算训练后的结果,希望这能解决你的错误。