训练model时将新鲜保存至log:
log文件存放数据格式如下:
INFO 2022-04-12 13:25:54 train.py: 148] xxxxxxx| 2022-04-12 13:25:54.727680 | step:1/1/100 | lr=0.000001 | loss=4.375328 | loss2=1.777036 | loss3=1.451537 | loss4=1.436890 | loss5=1.437320
INFO 2022-04-12 13:26:02 train.py: 148] xxxxxxx| 2022-04-12 13:26:02.675321 | step:11/1/100 | lr=0.000001 | loss=4.338048 | loss2=1.799401 | loss3=1.400347 | loss4=1.404003 | loss5=1.439920
INFO 2022-04-12 13:26:10 train.py: 148] xxxxxxx| 2022-04-12 13:26:10.768723 | step:21/1/100 | lr=0.000001 | loss=4.435394 | loss2=1.917998 | loss3=1.403522 | loss4=1.399962 | loss5=1.386502
INFO 2022-04-12 13:26:18 train.py: 148] xxxxxxx| 2022-04-12 13:26:18.856023 | step:31/1/100 | lr=0.000002 | loss=4.242309 | loss2=1.729486 | loss3=1.394903 | loss4=1.383412 | loss5=1.417133
。。。。。。
完整程序如下:
import matplotlib.pyplot as plot
def getLoss(logFile):
f = open(logFile, "r", encoding='utf-8')
line = f.readline() # 以行的形式进行读取文件
lossArr = []
loss2Arr = []
loss3Arr = []
loss4Arr = []
loss5Arr = []
while line:
if 'loss=' in line:
lossArr.append(float(line[-77:-68]))
loss2Arr.append(float(line[-60:-51]))
loss3Arr.append(float(line[-43:-34]))
loss4Arr.append(float(line[-26:-17]))
loss5Arr.append(float(line[-9:]))
line = f.readline()
f.close()
return lossArr, loss2Arr, loss3Arr, loss4Arr, loss5Arr
def drawLine(arr, xName, yName, title, graduate):
# 横坐标 采用列表表达式
x = [x+1 for x in range(len(arr))]
# 纵坐标
y = arr
# 生成折线图:函数polt
plot.plot(x, y)
# 设置横坐标说明
plot.xlabel(xName)
# 设置纵坐标说明
plot.ylabel(yName)
# 添加标题
plot.title(title)
# 设置纵坐标刻度
plot.yticks(graduate)
# 显示网格
plot.grid(True)
# 显示图表
plot.show()
if __name__ == '__main__':
loss, loss2, loss3, loss4, loss5 = getLoss(r"train_scwssod.log")
print(loss)
print(loss2)
print(loss3)
print(loss4)
print(loss5)
graduate = []
deGraduate = 5
# 计算y的刻度值
for i in range(len(loss)):
if i * deGraduate < max(loss) + deGraduate:
graduate.append(i * deGraduate)
print(graduate)
drawLine(loss, "Iterated", "Loss", "Loss function curve", graduate)
drawLine(loss2, "Iterated", "Loss", "Loss function curve", graduate)
drawLine(loss3, "Iterated", "Loss", "Loss function curve", graduate)
drawLine(loss4, "Iterated", "Loss", "Loss function curve", graduate)
drawLine(loss5, "Iterated", "Loss", "Loss function curve", graduate)
本文希望对大家有帮助,当然上文若有不妥之处,欢迎指正。
分享决定高度,学习拉开差距