python绘制Loss和Acc曲线+读取txt和log文件

log文件如下所示:在这里插入图片描述

代码

def read_log(filename):
    fp=open(filename)
    for line in fp.readlines():
        train_loss=line[-27:-18]
        train_acc=line[-8:]

        with open('test.txt','a') as fp2:
            fp2.write(train_loss+train_acc)

    fp.close()

def main():
    filename='Epoch50.log'
    read_log(filename)
    print('写入完成')

if __name__=='__main__':
    main()

完成后
在这里插入图片描述

绘制loss和acc曲线

这里的损失是一个Epoch中batchsize=32的数据,相当于一个epoch有308个迭代,50*308个点。(坐标轴改过还是太难看了)
在这里插入图片描述
每个Epoch后,对测试集进行准确率的测试。
在这里插入图片描述
代码

import matplotlib.pyplot as plt
import numpy as np

def draw_curve(filename):
    data=np.loadtxt(filename,dtype=np.float32)
    y1=data[:,1]
    x1=range(0,50)
    plt.plot(x1,y1,label='Fist line',linewidth=1,color='r',marker='o',
             markerfacecolor='blue',markersize=3)
    plt.show()

def main():
    filename='epoch_acc.txt'
    draw_curve(filename)
    print('Finish')

if __name__=='__main__':
    main()

Python中以’r’,‘r+’,‘w’,‘w+’,‘a’,'a+'打开文件的区别

‘r’只读模式,必须打开一个已有的文件,且只能执行读操作。
‘r+’读+追加模式,可读可写,与‘r’相同之处在于也是必须打开一个已有的文件,不同的是它可写可读,而且写与读不分先 后,即随时都可进行读与写。(写为追加在文件末尾)
‘w’只写模式,打开即默认创建一个新的空文件,当然若打开的是已有文件,则清空文件,且只能执行写操作。
‘w+’写读模式,打开创建新文件,因此需要先把内容写进去在读。即保证文件有内容通过移动光标来读自己想要的部分。
‘a’追加模式,若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建新文件,只能执行写(追加在后面),不能读。即追加写。
‘a+’追加读写模式,打开文件方式同‘a’一样,写方式也和’a’一样,但是可以读。且是任意时刻读写。需要注意的是你若刚用‘a+’打开一个文件,则不能立即读,因为此时光标已经是文件末尾,除非你把光标移动到初始位置或任意非末尾的位置。

参考

matplotlib官方:https://matplotlib.org/gallery/index.html
https://blog.csdn.net/beifangdefengchuilai/article/details/79592454

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 可以使用 Matplotlib 库在 Python绘制 loss 和 epoch 曲线。首先,需要在代码中导入 Matplotlib,然后通过记录 loss 和 epoch 的数值并将其作为 Matplotlib 的输入数据,最后调用 plot 函数绘制曲线。例如: ``` import matplotlib.pyplot as plt epochs = [1, 2, 3, 4, 5] loss = [0.2, 0.15, 0.1, 0.05, 0.01] plt.plot(epochs, loss, 'r') plt.xlabel('Epochs') plt.ylabel('Loss') plt.title('Loss vs. Epochs') plt.show() ``` 这将绘制红色的 loss 和 epoch 曲线。 ### 回答2: Python是一种高级的编程语言,适用于各种领域,包括机器学习和深度学习。当我们训练模型时,我们通常需要了解模型的性能如何随时间推移而变化。为了实现这一目标,我们在代码中添加了可视化损失和epoch曲线的功能。下面将详细介绍如何使用Python绘制loss和epoch曲线。 首先,我们需要从训练模型的程序中获取损失和epoch数据。我们可以使用Python的numpy库来存储这些数据。在训练期间,我们可以将损失和epoch数据发送到numpy数组中。通常,我们将损失和epoch数据保存在csv文件中,以备将来使用。 接下来,我们需要将损失和epoch数据可视化。我们可以使用Python的matplotlib库来实现可视化。对于简单的可视化,我们可以使用plt.plot()函数将损失和epoch数据传递给Matplotlib。在图表上,将显示损失和epoch的变化趋势。 如果我们想更加详细地研究模型的性能,并将损失和epoch图表细化到数据点级别,我们可以使用Seaborn库。Seaborn库建立在Matplotlib库之上,并提供了更加高效和美观的可视化效果。 一些其他的Python库,如Plotly和Bokeh,提供了交互式的数据可视化,使用户能够从数据中获取更多信息。 总的来说,Python的numpy,Matplotlib,Seaborn等开源库可以帮助我们对机器学习和深度学习的模型进行可视化,以进一步优化模型性能。可视化数据可以帮助我们更好地理解模型的运行和优化,以便在竞争激烈的数据科学和机器学习领域中保持竞争优势。 ### 回答3: Python是一种高级编程语言,其简单易学、易于阅读和有效地处理数据,使其成为机器学习和深度学习领域的流行语言。在训练深度学习模型时,监控模型表现的指标非常重要。通常,人们使用lossaccuracy来监测模型的表现,其中loss表示在一次迭代中预测值与实际值之间的误差。 在机器学习中,模型的loss通常会在每个epoch中被计算并记录下来。这些数据需要可视化来更好地理解模型表现。Python提供了一种简单而有效的方法来绘制loss和epoch曲线,这是使用matplotlib库。 首先,我们需要在训练过程中记录每个epoch中的loss。 这可以通过以下方式实现: history = model.fit(X_train, y_train, epochs=10, validation_data=(X_val, y_val)) loss = history.history['loss'] val_loss = history.history['val_loss'] 其中,history是模型训练的历史记录,而loss和val_loss分别是训练集和验证集中的loss。 接下来,我们可以使用matplotlib库来绘制loss和epoch曲线,并添加必要的标签和标题。示例代码如下所示: import matplotlib.pyplot as plt epochs = range(1, len(loss) + 1) plt.plot(epochs, loss, 'bo', label='Training loss') plt.plot(epochs, val_loss, 'b', label='Validation loss') plt.title('Training and Validation Loss') plt.xlabel('Epochs') plt.ylabel('Loss') plt.legend() plt.show() 此代码将绘制一个图表,其中包含两个曲线:蓝色圆点表示训练集的loss,而蓝色线表示验证集的loss。通过图表,我们可以看出模型是否过度拟合,以及我们需要对其进行调整。 总之,通过Python和matplotlib库,绘制loss和epoch曲线是一项简单而重要的任务,它可以帮助我们监视和优化机器学习模型的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值