python繪制lost損失曲線加方差范圍的操作方法
1. 導(dǎo)入必要的包
我使用了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. 數(shù)據(jù)的獲?。商^此步)
我用的數(shù)據(jù)是通過深度強(qiáng)化得到的回報曲線。數(shù)據(jù)結(jié)構(gòu)如下所示,我所需要的是從train開始的部分,分別對應(yīng)總的回報,平均回報和回報的方差。我采用了re.findall的正則表達(dá)式去提取我所需要的數(shù)據(jù),具體的操作方式可以查看源碼。
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格式成功。設(shè)置分辨率為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并回車
4.含有方差的平均回報繪制
在強(qiáng)化學(xué)習(xí)的論文中,我們經(jīng)??吹揭粭l收斂線,周圍還有淺淺的范圍線,那些范圍線就是方差。繪制代碼如下,主要包含了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)
結(jié)果如下
可以看到深綠色上下包裹著淺綠色的線,這就是fill_between的作用,其中可以調(diào)節(jié)alpha來改變顏色深度。
到此這篇關(guān)于python繪制lost損失曲線加方差范圍的文章就介紹到這了,更多相關(guān)python損失曲線 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Tensorflow讀取并輸出已保存模型的權(quán)重數(shù)值方式
今天小編就為大家分享一篇Tensorflow讀取并輸出已保存模型的權(quán)重數(shù)值方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看不看2020-01-01python遞歸&迭代方法實現(xiàn)鏈表反轉(zhuǎn)
這篇文章主要介紹了python遞歸&迭代方法實現(xiàn)鏈表反轉(zhuǎn),文章分享一段詳細(xì)實現(xiàn)代碼,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)或工作有所幫助2022-02-02對Python的Django框架中的項目進(jìn)行單元測試的方法
這篇文章主要介紹了對Python的Django框架中的項目進(jìn)行單元測試的方法,使用Django中的tests.py模塊可以輕松地檢測出一些常見錯誤,需要的朋友可以參考下2016-04-04教你如何將 Sublime 3 打造成 Python/Django IDE開發(fā)利器
Sublime Text 是一款非常強(qiáng)大的文本編輯器, 下面我們介紹如何將 Sublime Text 3 打造成一款 Python/Django 開發(fā)利器:2014-07-07Python利用正則表達(dá)式匹配并截取指定子串及去重的方法
這篇文章主要介紹了Python利用正則表達(dá)式匹配并截取指定子串及去重的方法,涉及Python正則表達(dá)式匹配及字符串截取操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07python多進(jìn)程實現(xiàn)文件下載傳輸功能
這篇文章主要為大家詳細(xì)介紹了python多進(jìn)程實現(xiàn)文件下載傳輸功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Python paramiko 模塊淺談與SSH主要功能模擬解析
這篇文章主要介紹了Python paramiko 模塊詳解與SSH主要功能模擬,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02