如果我再次适应模型或者它会重置为初始损失​​,损失是否会减少?

时间:2018-01-19 13:19:52

标签: machine-learning neural-network deep-learning iteration keras

    for iteration in range(NUM_ITERATIONS):
        print()
        print("="*50)
        print("Iteration:",iteration)
        model.fit(X,y,batch_size=BATCH_SIZE,epochs=NUM_EPOCH_ITERATION)
        rand=np.random.randint(len(x_labels))
        test="vikas n s "
        print(test,end="")

        for i in range(NUM_PREDICTION_PER_EPOCH):
            Xtest=np.zeros((1,sqlen,nb_chars),dtype=np.bool)
            for i,ch in enumerate(test):
                Xtest[0,i,char2index[ch]]=1
            pred=model.predict(Xtest)
            temp=pred
            pred=pred[0]
            ypredict=index2char[np.argmax(pred)]
            print(ypredict,end="")
            test=test[1:]+ypredict

在这段代码中,每次迭代我都适合模型。 我的假设是,当我再次适应模型时,损失应该重置为原始损失或接近原始损失。但我发现的是损失仍在继续。 即: 如果最初的损失是4 并且在第一次迭代中所有时期之后,损失降至2。 现在,当我再次在下一次迭代中拟合模型时,我预计损失将从4开始。而不是从2继续。 为什么会这样?

1 个答案:

答案 0 :(得分:2)

因为Keras model.fit方法就是这样做的,即从模型已经过的任何状态开始训练;因此,如果模型已经过前一个会话/迭代的一些训练,那么新的fit确实从那一点开始。

如果你想为每次迭代建立一个新的拟合会话(即"重置"你的模型),你应该将你的模型构建在一个便利函数中,并在每次迭代之前调用这个函数{{ 1}}(或者当然只是在每次迭代中包含整个模型构建代码......)。