文章目录
1 训练曲线–震荡的非常厉害
上一篇文章用python自己绘制训练曲线震荡的非常厉害(下图绿色曲线),而tensorboard的曲线比较平滑(下下图黑色曲线),
原因是tensorboard显示的曲线是经过平滑处理过的(其灰黑色的背景就平滑处理前的波形)
2 基于Numpy.convolve曲线平均滤波
滑动平均概念:
滑动平均滤波法(又称:递推平均滤波法),它把连续取N个采样值看成一个队列 ,队列的长度固定为N ,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则) 。把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。
N值的选取:流量,N=12;压力:N=4;液面,N=4 ~ 12;温度,N=1~4
滑动平均的优缺点:
优点: 对周期性干扰有良好的抑制作用,平滑度高,适用于高频振荡的系统。
缺点: 灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差,不易消除由于脉冲干扰所引起的采样值偏差,不适用于脉冲干扰比较严重的场合,比较浪费RAM 。
from matplotlib import pyplot as plt
import csv
import numpy as np
#基于Numpy.convolve实现滑动平均滤波
def moving_average(interval, windowsize):
window = np.ones(int(windowsize)) / float(windowsize)
re = np.convolve(interval, window, 'same')
return re
filename = "D:/python/pltt/train_loss.csv" #.csv文件路径,这里可以添加绝对路径
with open(filename) as f:
csvreader = csv.reader(f, delimiter = ",", quotechar='"')
for line in range(1): #1代表从文件第2行开始读取
next (csvreader)
print("lines: ",line) #打印行数
x = [] #横纵坐标分别建立了两个list
y = []
for row in csvreader:
x.append(float(row[1])) #读取第2、3列数据,放入list
y.append(float(row[2]))
# 插值法 对曲线平滑处理
y_smooth = moving_average(y, 15)
# 可视化图线
plt.plot(x,y_smooth,'g', linewidth=1.0) #曲线颜色绿色,线条宽度1
plt.show()
3 python 绘制训练曲线 平滑处理–Savitzky-Golay 滤波器曲线平滑
python 绘制训练曲线 平滑处理–Savitzky-Golay 滤波器曲线平滑