matplotlib范围曲线简例
2023-12-29 14:21:25
想在画(平均)loss 曲线时顺便表示方差,即每一个 epoch 的平均 loss 用 plot 画曲线,而在曲线周围用一个浅色区域表示方差。效果:
参考 [1-3],用到 matplotlib.pyplot.fill_between 函数。为显示对浅色区及其边界的样式控制,这里用了花里胡哨的配色。
import math
import numpy as np
import matplotlib.pyplot as plt
# 造两个 loss
loss1, loss2 = [], []
for epoch in range(1, 20):
loss1.append(1 / epoch + np.random.randn(100) * 0.1)
loss2.append(math.exp(-epoch) + np.random.randn(100) * 0.1)
# 纵轴:loss 均值、方差
loss1 = np.asarray(loss1)
mu1 = np.mean(loss1, axis=1)
sigma1 = np.std(loss1, axis=1)
loss2 = np.asarray(loss2)
mu2 = np.mean(loss2, axis=1)
sigma2 = np.std(loss2, axis=1)
# 横轴:epoch
epochs = list(range(loss1.shape[0]))
fig = plt.figure()
# 均值:用 plot 画
plt.plot(epochs, mu1, label="loss1", linewidth=2, marker='s', c='r') # 红
plt.plot(epochs, mu2, label="loss2", linewidth=2, marker='+', c='b') # 蓝
# 方差:浅色区,用 fill_between
plt.fill_between(
epochs, # x
mu1 + sigma1, # y upper
mu1 - sigma1, # y lower
color='g', # 绿,color = edgecolor + facecolor
linewidth=2, # 浅色区边界粗细
alpha=0.2 # 浅色区能见度
)
plt.fill_between(
epochs,
mu2 + sigma2,
mu2 - sigma2,
edgecolor='none', # 不要边界
facecolor='orange', # 橙
linewidth=2,
alpha=0.2
)
plt.title("loss curve")
plt.xticks(epochs, list(map(str, epochs))) # 设横轴标
plt.xlabel("epoch")
plt.ylabel("loss")
plt.legend(fancybox=True, framealpha=0) # 透明图例
fig.savefig("loss-curve.png", transparent=True) # 透明背景
References
文章来源:https://blog.csdn.net/HackerTom/article/details/135288307
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!