首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Keras中绘制val_loss和loss得到的数字不正确

在Keras中绘制val_loss和loss得到的数字不正确
EN

Stack Overflow用户
提问于 2020-04-16 10:11:33
回答 1查看 98关注 0票数 0

我正在运行下面的一段代码,以便在Keras中绘制列车和测试损失曲线。

代码语言:javascript
复制
train_x, test_x, train_y, test_y = train_test_split(features, target_classes , test_size=0.30)

epochs = 4
batch_size = 256

for i in range(epochs):
    print("epoch Value", i)

    ix_train = np.random.choice(train_x.shape[0], size=batch_size)

    score = model.fit(
        train_x[ix_train], train_y[ix_train]
        , epochs=1
        , validation_data=(test_x, test_y)
    )

scores.append(score)

//此代码用于绘制val_loss和train_loss

代码语言:javascript
复制
for i in range(0, len(scores)):
    val_loss_change.append(scores[i].history['val_loss'])
    loss_change.append(scores[i].history['loss'])

plt.plot(val_loss_change, label='val_loss')
plt.plot(loss_change, label='train_loss')
plt.legend(loc='upper right')
plt.show()
plt.savefig('LossVal_loss')

生成绘图时,打印的值看起来并不真实。请参阅附图LossVal_loss。我已经从Python Debug prompt复制了val_loss_change和loss_change。

loss_change=:[4.3783984780311584,3.9744645059108734,3.921104222536087,3.5381810665130615,3.3796855211257935,3.161308079957962,2.9224385917186737,2.80639386177063,2.5576193928718567,2.1081390380859375]

val_loss_change =:[4.315125052134196,4.105147279103597,4.0108651924133305,3.9794070688883463,4.025013980865478,4.060481491088868,4.1542660458882645,4.011785678863525,3.989632488886515,4.240501753489176]

当我简单地从pyhton Debug提示符中复制val_loss_change和loss_change并创建一个新的python文件并尝试运行它时,如下代码所示。绘制的图是正确的。请参阅附图LossVal_loss1

代码语言:javascript
复制
val_loss_change = [[4.315125052134196], [4.105147279103597], [4.0108651924133305], [3.9794070688883463], [4.025013980865478], [4.060481491088868], [4.1542660458882645], [4.011785678863525], [3.989632488886515], [4.240501753489176]]
loss_change = [[4.3783984780311584], [3.9744645059108734], [3.921104222536087], [3.5381810665130615], [3.3796855211257935], [3.161308079957962], [2.9224385917186737], [2.80639386177063], [2.5576193928718567], [2.1081390380859375]]

plt.plot(val_loss_change, label='val_loss')
plt.plot(loss_change, label='train_loss')
plt.legend(loc='upper right')
plt.show()
plt.savefig('LossVal_loss1')





Can anyone tell what goes wrong in 1st code?
I want to run fit function multiple times and then plot a curve for loss and val_loss.




  [1 Correct Figure from 2nd code ]: https://i.stack.imgur.com/fVg4o.png
  [2 Incorrect Figure from 1st Code ]: https://i.stack.imgur.com/dcRSE.png
EN

回答 1

Stack Overflow用户

发布于 2020-04-16 10:37:21

您正在一次又一次地使用1个纪元拟合模型。将 epochs 更改为epochs的总值,并删除额外的循环。我在手机上,所以我现在不能测试代码。

要获得更好的动态图形,请使用TensorBoard

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61241600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档