【问题标题】:Will the loss decrease if i fit the model once again or will it reset to initial loss? [closed]如果我再次拟合模型,损失会减少还是会重置为初始损失​​? [关闭]
【发布时间】:2018-01-19 13:19:52
【问题描述】:
    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

在这段代码中,每次迭代我都在拟合模型。 我的假设是,当我再次拟合模型时,应该将损失重置为原始损失或与之接近的损失。但我发现损失仍在继续。 IE: 如果初始损失为 4 并且在第 1 次迭代中的所有 epoch 损失下降到 2。 现在,当我在下一次迭代中再次拟合模型时,我希望损失从 4 开始。相反,它从 2 开始。 为什么会这样?

【问题讨论】:

  • 看起来模型从未在该代码中重置。所以不,它不应该显示类似于训练过程开始时的损失值。
  • @E_net4 如何重置模型?

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


【解决方案1】:

因为 Keras model.fit 方法正是这样做的,即从模型当时的任何状态开始训练;因此,如果模型已经从之前的会话/迭代中接受了一些训练,那么新的fit 确实会从该点开始。

如果您想为每次迭代创建一个新的拟合会话(即“重置”您的模型),您应该将您的模型构建包装在一个便利函数中,并在每次迭代之前在 model.fit 之前调用此函数(或者当然只需在每次迭代中包含整个模型构建代码...)。

【讨论】:

  • 你可以修改上面的重置吗?
猜你喜欢
  • 2020-01-04
  • 2020-06-25
  • 2019-10-26
  • 2023-03-13
  • 1970-01-01
  • 2020-06-06
  • 2020-08-17
  • 2018-06-25
  • 1970-01-01
相关资源
最近更新 更多