概要
tensorboard
记录数据,并保存为fie_name.csv
文件- 加载
file_name.csv
文件, 处理加载得到数据,然后通过seaborn
显示出来。
1. tensorboard
通常来说,我们一般会用 tensorboard
去记录一些数据。
所以我们先介绍一下
tensorboard
一些注意事项
setings
按钮上是可以设置 多久reload
的,训练的时候记得打开,这样就不用手动刷新了。scalars
界面可以设置smoothing
, 用的平滑算法可能是Exponential Moving Average (EMA)
然后下面是PPO跑LunarLander-v2的图示。
你可以认为他们seed不一样。
先勾选上方的 Show data downloads links
,然后图标下方会出现下载按钮,选中下载,格式为.csv
.
保存完后打开pycharm
。
2. seaborn
pycharm 中我们的文件结果如下, 两个保存的csv文件。然后有一个测试的jupyter文件
- 如何得到带阴影的图片
在 Seaborn 中,带有阴影的图形通常表示误差区间。这种图形一般用于显示估计值的不确定性,其中阴影表示估计值的置信区间或标准差。这在统计学和数据可视化中是一种常见的方式,以展示估计值的可靠性或稳定性。
所以意味着 同一个 x 上 y 应该是有多个值的。
解决方法: 堆叠
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style("darkgrid")
# without smoothing
csv_file_path = "./reward.csv"
df = pd.read_csv(csv_file_path)
csv_file_path = "./reward1.csv"
df1 = pd.read_csv(csv_file_path)
# 堆叠到一块
df = pd.concat([df,df1],ignore_index=True)
plt.title("LunarLander-v2")
sns.lineplot(x="Step",y="Value",data=df,label="PPO")
plt.xlabel("steps")
plt.ylabel("reward")
plt.show()
效果如下
- 如何同时展现平滑前和平滑后的曲线
解决方法: 设置透明度,同样的颜色,但是透明度不一样,即可
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style("darkgrid")
# without smoothing
csv_file_path = "./reward.csv"
df = pd.read_csv(csv_file_path)
x, y = df["Step"], df["Value"]
sns.lineplot(x=x,y=y, color="red",alpha=0.2)
# Exponential Moving Average (EMA)
smoothed_y = y.ewm(span=15, adjust=False).mean()
plt.title("LunarLander-v2")
sns.lineplot(x=x,y=smoothed_y,color="red",label="PPO")
plt.xlabel("steps")
plt.ylabel("reward")
plt.show()
效果如下
然后 对于一些其他的细节,比如x轴的显示,label的字体和大小等,就自己去弄吧。至此,我们已经可以应付大部分的论文图片的需求了。