按理说,val_acc的值的个数是和loss值的个数匹配,那现在只输出了一个。
如图
history = model_final.fit(
train_generator,
epochs=epochs,
validation_data=validation_generator,
validation_steps=nb_validation_samples,
#问题就出现在了这句代码上,因为越界了
callbacks=[checkpoint,early])
import matplotlib.pyplot as plt
loss = history.history['loss']
val_loss = history.history['val_loss']
print(loss, val_loss)
输出:
理由:
validation_steps的最大值是验证集的数据/batch_size,因此把这句话删除或者设置成不要超过这个数字即可。
修改过后:
history = model_final.fit(
train_generator,
epochs=epochs,
validation_data=validation_generator,
validation_steps = int(nb_validation_samples / batch_size),
callbacks=[checkpoint,early])
结果:
此时val_loss的个数=epochs=loss
⚠️:一定要看编译器给出的warnings。不要认为不是error就不看!
计算依据:
epochs:喂几次
batch:喂一次要喂的样本数
所以如果我有500个训练集,100个测试集,epochs=5,batch=20
那么steps_per_epoc=500/20=25,validation_steps=100/20=5