Python 3.x plot函数不打印仅在PyCharm中绘制图例的曲线

Python 3.x plot函数不打印仅在PyCharm中绘制图例的曲线,python-3.x,matplotlib,deep-learning,pycharm,pytorch,Python 3.x,Matplotlib,Deep Learning,Pycharm,Pytorch,我正在做一些关于使用PyTorch进行图像分类的家庭作业。为此,我访问了以下链接:并获得了一些与培训损失和验证损失相关的结果 [ 1/10] train_loss: 1.56952 valid_loss: 1.54557 Validation loss decreased (inf --> 1.545571). Saving model ... [ 2/10] train_loss: 1.52198 valid_loss: 1.50932 Validation loss decrease

我正在做一些关于使用PyTorch进行图像分类的家庭作业。为此,我访问了以下链接:并获得了一些与培训损失和验证损失相关的结果

[ 1/10] train_loss: 1.56952 valid_loss: 1.54557
Validation loss decreased (inf --> 1.545571).  Saving model ...
[ 2/10] train_loss: 1.52198 valid_loss: 1.50932
Validation loss decreased (1.545571 --> 1.509324).  Saving model ...
[ 3/10] train_loss: 1.48958 valid_loss: 1.48514
Validation loss decreased (1.509324 --> 1.485136).  Saving model ...
[ 4/10] train_loss: 1.46960 valid_loss: 1.46938
Validation loss decreased (1.485136 --> 1.469381).  Saving model ...
但问题是,每当我试图绘制损失曲线时,它并没有显示任何东西

我希望我的曲线是这样的。 下面是我用来绘制这条曲线的代码:

  # visualize the loss as the network trained
    fig = plt.figure(figsize=(10, 8))
    plt.plot(range(1, len(train_loss) + 1), train_loss, label='Training Loss')
    plt.plot(range(1, len(valid_loss) + 1), valid_loss, label='Validation Loss')

        # find position of lowest validation loss
    minposs = valid_loss.index(min(valid_loss)) + 1
    plt.axvline(minposs, linestyle='--', color='r', label='Early Stopping Checkpoint')

    plt.xlabel('epochs')
    plt.ylabel('loss')
    plt.ylim(0, 0.5)  # consistent scale
    plt.xlim(0, len(train_loss) + 1)  # consistent scale
    plt.grid(True)
    plt.legend()
    plt.tight_layout()
    plt.show()
    fig.savefig('loss_plot.png', bbox_inches='tight')
这是训练损失和测试损失的长度值

len of train loss: 1
train loss :[1.6059992909431458]
由于
len(train_loss)==1
train_loss=[1.60599992909431458]
,您的绘图与调用
plt.plot(范围(1,2),[1.6059992909431458])
时完全相同,您可以检查,它是空的(这是因为
plt.plot
在数据点之间绘制线条,并且由于存在单个数据点,因此无法绘制线条)。您可以将
plt.plot
更改为
plt.scatter
,以查看单个数据点

因此,这个问题实际上与绘图无关,您应该找出为什么您的算法只运行一个历元并对此进行故障排除,而不是绘图。

由于
len(train\u loss)==1
train\u loss=[1.6059992909431458]
,您的绘图与调用
plt.plot时完全相同(范围(1,2),[1.6059992909431458])
,您可以检查,它是空的(这是因为
plt.plot
在数据点之间绘制直线,并且由于存在单个数据点,因此不能绘制直线)。您可以将
plt.plot
更改为
plt.scatter
,以查看单个数据点


因此,这个问题实际上与绘图无关,您应该找出为什么您的算法只运行一个历元并对此进行故障排除,而不是绘图。

您可以打印(并在此处发布)到
绘图
函数的输入吗?即
范围(1,len(train\u loss)+1)
火车损失
?@Jatentaki,我已经更新了我的帖子。请看一看!你已经更新了帖子,但没有使用我要求的信息。我要求你
打印
传递给
plt.plot
的确切值,以及它们的计算方法(可能) irrelevant@Jatentaki,很抱歉之前的更新不正确。这是我的结果,您在列车丢失镜头前询问:1列车丢失:[1.6059992909431458]。您能打印(并在此处发布)到
绘图功能的输入吗?即
范围(1,镜头(列车丢失)+1)
火车损失
?@Jatentaki,我已经更新了我的帖子。请看一看!你已经更新了帖子,但没有使用我要求的信息。我要求你
打印
传递给
plt.plot
的确切值,以及它们的计算方法(可能) irrelevant@Jatentaki,很抱歉之前的更新不正确。这是我的结果,您在列车丢失之前询问:1列车丢失:[1.6059992909431458]。