中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣操作python繪制lost損失曲線加方差范圍

發布時間:2021-10-09 13:49:17 來源:億速云 閱讀:152 作者:柒染 欄目:開發技術

這篇文章將為大家詳細講解有關怎樣操作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)

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

關于怎樣操作python繪制lost損失曲線加方差范圍就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富顺县| 廉江市| 济源市| 综艺| 龙里县| 庄浪县| 化州市| 瑞昌市| 化隆| 九龙坡区| 垦利县| 澄城县| 商都县| 巴东县| 沐川县| 太谷县| 海门市| 万载县| 河源市| 柳州市| 嵩明县| 湛江市| 博爱县| 平舆县| 连江县| 邵武市| 侯马市| 丰镇市| 澄江县| 九台市| 陵水| 丘北县| 寿光市| 璧山县| 友谊县| 高雄市| 广汉市| 潞城市| 日喀则市| 鸡东县| 德州市|