首页 > 解决方案 > 尝试绘制损失与时期的维度错误

问题描述

这是我的 model.fit_generator (训练了 40 个时期):

history = model.fit_generator(
 train_data_gen,
 steps_per_epoch=total_train // batch_size,
 epochs=epochs,
 validation_data=val_data_gen,
 validation_steps=total_val // batch_size
)

这是绘图的代码:

import matplotlib as plt
loss = history.history['loss']
plt.plot(epochs,loss, 'bo', label='Training Loss')
plt.show()

这是我得到的错误:

ValueError: x and y must have same first dimension, but have shapes (1,) and (40,)

我不明白我做错了什么。有人可以帮忙吗?

标签: pythonmatplotlibkeras

解决方案


您不应尝试针对epochs(变量)进行绘图,这只是一个数字(此处为 40),因此存在尺寸误差。您的问题本质上是如何绘制列表(loss);时期数隐含在列表中(它是列表长度)。为简单起见,假设只有 10 个 epoch 和

loss = [0.7251979386058971,
  0.6640552306833333,
  0.6190941931069023,
  0.5602273066015956,
  0.48771809028534785,
  0.40796665995284814,
  0.33154681897220617,
  0.2698465999525444,
  0.227492357244586,
  0.1998490962115201]

然后简单地

plt.plot(loss, 'bo')
plt.title('Training Loss')
plt.show()

在此处输入图像描述


推荐阅读