国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python繪制lost損失曲線加方差范圍的操作方法

python繪制lost損失曲線加方差范圍的操作方法

2022-01-20 23:57monotonomo Python

這篇文章主要介紹了python繪制lost損失曲線加方差范圍的操作方法,首先大家需要導入必要的包及數據的獲取方法,本文給大家介紹的非常詳細,需要的朋友可以參考下

1. 導入必要的包

我使用了seaborn,通過sns.set_style可以讓繪制出來的圖更漂亮,而且可以切換不同的類型

import re
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import shutil
import os
sns.set_style('whitegrid')

 

2. 數據的獲取(可跳過此步)

我用的數據是通過深度強化得到的回報曲線。數據結構如下所示,我所需要的是從train開始的部分,分別對應總的回報,平均回報和回報的方差。我采用了re.findall的正則表達式去提取我所需要的數據,具體的操作方式可以查看源碼。

10-15 22:23:15 DATA/traffic DEBUG train 0 totalreward : -99477.0 ReturnAvg : -102.55360824742269 ReturnStd : 34.34301970480272
10-15 22:23:29 DATA/traffic DEBUG train 1 totalreward : -83131.0 ReturnAvg : -85.70206185567011 ReturnStd : 53.442993000985545

file_path = 'log.txt'
content = []
with open(file_path, 'r') as f:
  for line in f.readlines():
      line = line.strip('\n')
      content.append(line)
iter = []
totalreward = []
returnavg = []
returnstd = []
for line in content:
  str1 = re.findall('train.+', line)
  v = [float(x) for x in re.findall('-?\d+.?\d+|\d+', str1[0])]
  iter.append(v[0])
  totalreward.append(v[1])
  returnavg.append(v[2])
  returnstd.append(v[3])

 

3. 回報繪制

直接將圖像保存到Plot的文件夾,這里保存不了jpg格式,一直保存,最后將其保存為png格式成功。設置分辨率為1000,其實差不多,只是線更清楚了。

color = cm.viridis(0.5)
f, ax = plt.subplots(1,1)
ax.plot(iter, totalreward, color=color)
ax.legend()
ax.set_xlabel('Iteration')
ax.set_ylabel('Return')
exp_dir = 'Plot/'
if not os.path.exists(exp_dir):
  os.makedirs(exp_dir, exist_ok=True)
else:
  os.makedirs(exp_dir, exist_ok=True)
f.savefig(os.path.join('Plot', 'reward' + '.png'), dpi=1000)

曲線如下圖,可通過plt.show()顯示出來,或者直接在console輸入f并回車

python繪制lost損失曲線加方差范圍的操作方法

 

4.含有方差的平均回報繪制

在強化學習的論文中,我們經常看到一條收斂線,周圍還有淺淺的范圍線,那些范圍線就是方差。繪制代碼如下,主要包含了fill_between.

color = cm.viridis(0.7)
f, ax = plt.subplots(1,1)
ax.plot(iter, returnavg, color=color)
r1 = list(map(lambda x: x[0]-x[1], zip(returnavg, returnstd)))
r2 = list(map(lambda x: x[0]+x[1], zip(returnavg, returnstd)))
ax.fill_between(iter, r1, r2, color=color, alpha=0.2)
ax.legend()
ax.set_xlabel('Iteration')
ax.set_ylabel('Return')
exp_dir = 'Plot/'
if not os.path.exists(exp_dir):
  os.makedirs(exp_dir, exist_ok=True)
f.savefig(os.path.join('Plot', 'avgreward' + '.png'), dpi=50)

結果如下

python繪制lost損失曲線加方差范圍的操作方法

可以看到深綠色上下包裹著淺綠色的線,這就是fill_between的作用,其中可以調節alpha來改變顏色深度。

到此這篇關于python繪制lost損失曲線加方差范圍的文章就介紹到這了,更多相關python損失曲線 內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/monotonomo/article/details/83342768

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲高清毛片一区二区 | 亚洲国产精品久久 | 狠狠久久综合 | 国产婷婷精品av在线 | 日本不卡免费新一二三区 | 俺去俺来也www色官网cms | 亚洲毛片 | 久久免费视频观看 | 日本一区二区在线观看视频 | 久久久久精 | 日本a在线 | 天天影视网色香欲综合网无拦截 | av在线电影观看 | 日韩在线观看视频一区二区三区 | 国产综合视频 | 欧美一区二区三区免费 | 亚洲一区精品在线 | 国产色网 | 久久久精品456亚洲影院 | 欧美在线视频网站 | 精品福利一区二区三区 | 99精品一区 | 久久五月天婷婷 | 久久9色 | 成人狠狠干| 狠狠色噜噜狠狠狠8888米奇 | 国产成人综合av | 香港黄色录像片 | 日韩在线精品强乱中文字幕 | 中国女人真人一级毛片 | 在线日韩中文字幕 | 一区二区日韩精品 | 欧美日韩一区二区三区在线观看 | 欧美黄色一级 | 久久久久国产精品免费免费搜索 | 亚洲欧美中文日韩在线 | 久久99精品国产99久久6尤 | 亚洲三区在线观看 | 久久国产精品一区二区 | 国产精品一区二区免费 | av一区二区在线观看 |