import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# 读取存储为txt文件的数据
def data_read(dir_path):
with open(dir_path, "r") as f:
raw_data = f.read()
# data = raw_data[1:-1].split(" ,") # [-1:1]是为了去除文件中的前后中括号"[]"
data = raw_data[0:-1].split() # [-1:1]是为了去除文件中的前后中括号"[]"
# data =
data = np.asfarray(data, float)
return data
def moving_average(interval, windowsize):
window = np.ones(int(windowsize)) / float(windowsize)
re = np.convolve(interval, window, 'same')
return re
if __name__ == "__main__":
train_loss_path = r"output_l.txt" # 存储文件路径
rolling_intv = 50
#/*
y_train_loss = data_read(train_loss_path) # loss值,即y轴
y_train_loss = pd.DataFrame(y_train_loss)
y_train_loss = list(np.hstack(y_train_loss.rolling(rolling_intv, min_periods=1).mean().values))
#*/
# y_train_loss = data_read(train_loss_path)
# y_train_loss = moving_average(y_train_loss, 2)
x_train_loss = range(len(y_train_loss)) # loss的数量,即x轴
plt.figure()
# 去除顶部和右边框框
ax = plt.axes()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.xlabel('iters') # x轴标签
plt.ylabel('loss') # y轴标签
# 以x_train_loss为横坐标,y_train_loss为纵坐标,曲线宽度为1,实线,增加标签,训练损失,
# 默认颜色,如果想更改颜色,可以增加参数color='red',这是红色。
plt.plot(x_train_loss, y_train_loss, linewidth=1, linestyle="solid", label="val loss")
plt.xlim(0, 300)
plt.legend()
plt.title('Loss curve')
plt.show()
plt.savefig("loss.png")
画loss曲线图并使其平滑,做滤波处理
最新推荐文章于 2025-04-14 14:46:41 发布