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继续。 为什么会这样?
答案 0 :(得分:2)
因为Keras model.fit
方法就是这样做的,即从模型已经过的任何状态开始训练;因此,如果模型已经过前一个会话/迭代的一些训练,那么新的fit
确实从那一点开始。
如果你想为每次迭代建立一个新的拟合会话(即"重置"你的模型),你应该将你的模型构建在一个便利函数中,并在每次迭代之前调用这个函数{{ 1}}(或者当然只是在每次迭代中包含整个模型构建代码......)。