IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 强化学习paper绘图技巧——改进smooth -> 正文阅读

[人工智能]强化学习paper绘图技巧——改进smooth

绘图利器——Seaborn

强化学习的paper中离不开各种数据的可视化,绘图中如何对数据进行处理、平滑是个很重要的问题。
人类高质量图片:
图片来自论文“Addressing Function Approximation Error in Actor-Critic Methods”人类低质量图片:
个人数据绘制图片
那么如何绘制出一张高质量的图片呢?这里介绍一个绘图常用的Python库——Seaborn
首先是库的安装

pip install seaborn

接着是库的使用,可以参考以下文章:
官方链接
深度强化学习实验中的paper绘图方法
10分钟python图表绘制 | seaborn入门
使用方法基本就是链接中博客所介绍的那样,这里主要是针对链接深度强化学习实验中的paper绘图方法中提到的smooth函数进行一些修改,个人觉得链接中,smooth函数是有点问题的,绘制出的图像在结尾处会出现下降的情况。
贴出原博客代码

def smooth(data, sm=1):
    if sm > 1:
        smooth_data = []
        for d in data:
            y = np.ones(sm)*1.0/sm
            d = np.convolve(y, d, "same")
 
            smooth_data.append(d)
 
    return smooth_data

以上面TD3论文中的数据为例(数据链接),使用此函数对图中(d) Ant-v1进行绘制,图片如下所示:
smooth前:
在这里插入图片描述smooth后:

在这里插入图片描述可以很明显看到,数据经过处理后,已经变得很平滑。但是绘制出的结果和论文还是有一定差距的。经过分析发现,问题出现在smooth函数中的卷积部分,将代码进行如下修改:

def smooth(data, sm=1):
    smooth_data = []
    if sm > 1:
        for d in data:
            z = np.ones(len(d))
            y = np.ones(sm)*1.0
            d = np.convolve(y, d, "same")/np.convolve(y, z, "same")
            smooth_data.append(d)
    return smooth_data

再次绘制:
在这里插入图片描述可以看到,图像与论文结果一致。成功解决了这个问题。
贴出自己的绘图代码:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
linestyle = ['-', '--', ':', '-.']
color = ['r', 'g', 'b', 'k']
label = ['algo1', 'algo2', 'algo3', 'algo4']

def smooth(data, sm=1):
    smooth_data = []
    if sm > 1:
        for d in data:
            z = np.ones(len(d))
            y = np.ones(sm)*1.0
            d = np.convolve(y, d, "same")/np.convolve(y, z, "same")
            smooth_data.append(d)
    return smooth_data

data = []
# 下载好数据后,根据自己文件路径,修改np.load()中的代码路径
data1 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_0.npy").tolist()
data2 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_1.npy").tolist()
data3 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_2.npy").tolist()
data4 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_3.npy").tolist()
data5 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_4.npy").tolist()
data6 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_5.npy").tolist()
data7 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_6.npy").tolist()
data8 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_7.npy").tolist()
data9 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_8.npy").tolist()
data10 = np.load("E:\Github Download code\TD3-master\learning_curves\Ant\TD3_Ant-v1_9.npy").tolist()

data.append(data1)
data.append(data2)
data.append(data3)
data.append(data4)
data.append(data5)
data.append(data6)
data.append(data7)
data.append(data8)
data.append(data9)
data.append(data10)
y_data = smooth(data, 19)
x_data = np.arange(0, 1e6+5000, 5000)
sns.set(style="darkgrid", font_scale=1.5)
sns.tsplot(time=x_data, data=y_data, color=color[2], linestyle=linestyle[0])

个人经验

在绘制奖励函数时,尽量让y轴数据变得丰富,一个技巧是选取不同随机数种子,在不同种子下对算法进行测试,将每次种子下,产生的数据进行保存,最后再进行统一处理。
数据格式可以为:

y_data=[[seed1产生的奖励], [seed2产生的奖励], ..., [seedn产生的奖励]]
smooth_data = smooth(y_data, sm)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 23:44:08  更:2021-08-25 23:44:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:26:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码