Comments (9)
看到有人在问 tensorboard
的用法,刚好这几天看了 pytorch
的教程,就基于 pytorch
做个小结吧。
tensorboard
原本是 tensorflow
里的,随着版本的更新,目前 pytorchy
也支持了 tensorboard
这个功能。
tensorboard
是在 pytorch
的 utils
库里,调用的时候需要 from torch.utils.tensorboard import SummaryWriter
,这个 SummaryWriter
就是将训练过程中的数据保存到日志中,然后在本地打开对应的端口查看对应的结果,模板如下:
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs") # writer为自定义对象名,logs是日志文件名,这条代码实际就是创建一个日志文件以保存数据
writer.add_image("tag", image_tensor, global_step) # 往日志中添加单个图片,tensor和numpy array格式均可
writer.add_images("tag", images_tensor, global_step) # 往日志中添加一批图片
writer.add_scalar("tag", val, step) # # 往日志中添加常数
writer.close() # 在结束整个流程后记得加上这一句,把writer关掉
还能添加其他东西,可以看一下 SummaryWriter
里边的内容,或者去 pytorch
官网看一下doc.
这里对上边的语句做一下解释。首先 tag
可以理解为曲线图的图名,如上边的图片中的 tag
就是 steps_of_each_episode
, 然后 image_tensor
和 val
就是我们想要保存的东西,对于曲线图可以理解为纵轴坐标, global step
就是横轴坐标。
那么如何如何查看 tensorboard
呢,可以在 pycharm
的terminal
中输入 tensorboard --logdir=logs
(这个代码其实就是把上边我们创建的日志文件的地址赋给logdir, logs要与上边定义writer一致)然后就有一个本地的端口链接,点进去就可以看到结果了,当然也可以自行修改端口避免在服务器上跑的时候和别人冲突了,语法: tensorboard --logdir=logs --port=xxxx
(xxxx即为所要指定的端口, 默认为6006).
注意:如果不同训练过程中都使用 tensorboard
的话,且日志文件名没有更改,那么写入日志文件的 tag
应该进行修改,否则将会把结果绘制在之前的结果上边导致数据混乱,最好的方法就是更改日志文件名,比如这一次我用 writer = SummaryWriter("logs1")
, 下一次用 writer = SummaryWriter("logs2")
这样子。
最后举个简单的例子,比如要画个y = 2*x
的图,代码如下:
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("y_2x")
for x in range(20):
y = 2 * x
writer.add_scalar("y = 2x", y, x)
writer.close()
然后运行后在终端输入 tensorboard --logdir=y_2x
即可查看结果。
from easy-rl.
参考代码 链接中dqn 应该改为 DQN.
from easy-rl.
@MaxwellLiu
参考代码 链接中dqn 应该改为 DQN.
感谢反馈,github 的 pages 服务器出现问题了,不能更新在线阅读页面,等其回复正常,我们会及时更新
from easy-rl.
@MaxwellLiu
参考代码 链接中dqn 应该改为 DQN.
感谢您的反馈,链接已更新
from easy-rl.
cfg.max_episodes 这个在哪儿导入呢?
from easy-rl.
cfg.max_episodes 这个在哪儿导入呢?
你好,具体在哪个代码中,因为后面讲这个参数改为cfg.train_eps了,可能有漏掉的地方
from easy-rl.
您好,可以讲一下怎样用tensorboard查看结果吗,谢谢!
from easy-rl.
moving average rewards有什么意义,怎么解释他呢
from easy-rl.
env.seed(1)已经废止,应当改用env.reset(seed=1)
from easy-rl.
Related Issues (20)
- 怎么在Linux服务器上运行demo程序?
- the version of numpy
- 1.7.1 Gym示例 返回值增多了 HOT 3
- 第四章图4.10标注是不是有误? HOT 1
- Edit problem in Chapter3 HOT 1
- 随书代码在哪 HOT 6
- 第五章勘误 HOT 1
- 内容勘误? HOT 3
- 添加参考文献 HOT 1
- SAC代码问题 HOT 2
- 4.3 REINFORCE:蒙特卡洛策略梯度 HOT 1
- 最新的版本,可以出PDF吗 HOT 2
- value_iteration 算法不收敛 ? HOT 1
- 错别字 HOT 2
- DuelingDQN.ipynb中可能存在的两个BUG~
- 我在运行DQN代码时,初始的state总会多一个值。
- 图6.8左下角标识应该是“动作价值(Q)”? HOT 1
- DDPG算法实现出现问题
- 关于书中DDPG算法的疑问
- PPO算法的实现, 为啥要给概率取对数? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from easy-rl.