Tensorboard的使用
安装:
-
打开Anaconda Prompt
-
激活pytorch环境:conda activate pytorch
-
pip install tensorboard
1.SummaryWriter
Writes entries directly to event files in the log_dir to be consumed by TensorBoard.
add_scalar()方法
Add scalar data to summary
方法的参数(形象的解释):
Args: tag (str): Data identifier : 图像标题 scalar_value (float or string/blobname): Value to save : 图像 y 轴坐标 global_step (int): Global step value to record :图像 x 轴坐标 walltime (float): Optional override default walltime (time.time()) with seconds after epoch of event new_style (boolean): Whether to use new style (tensor field) or old style (simple_value field). New style could lead to faster data loading.
示例:
from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter("logs") # 运行后当前目录下会多出一个 "logs" 文件夹 # writer.add_image() for i in range(100): # 参数分别为:图像标题、y轴、x轴 writer.add_scalar(tag="y=x", scalar_value=i, global_step=i) writer.close()
如何打开事件文件?
方法:Anaconda Prompt命令行 / Pycharm:Tenminal
(pytorch) PS C:\Users\31058\Desktop\MyProject\ML> tensorboard --logdir=logs TensorFlow installation not found - running with reduced feature set. Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all TensorBoard 2.15.0 at http://localhost:6006/ (Press CTRL+C to quit)
注:默认打开的是本机的6006端口,但如果一台主机上有很多人同时进行训练时,同时打开一个端口会出现冲突
方法:指定端口
(pytorch) PS C:\Users\31058\Desktop\MyProject\ML> tensorboard --logdir=logs --port=6007 TensorFlow installation not found - running with reduced feature set. Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all TensorBoard 2.15.0 at http://localhost:6007/ (Press CTRL+C to quit)
注:如果多次执行,但不改变 add_scalar() 中 tag 参数的值的时候:如在原本 y=2x 的图像上再此绘制 y = 3x 的图像,则会出现强行拟合的问题
解决办法:
-
删除logs目录下的文件后再执行
-
you can have each new training job write to a new subdirectory(of your top level log directory)
add_image()方法
Add image data to summary
Args: tag (str): Data identifier img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data : 注意此处的数据类型要求 global_step (int): Global step value to record walltime (float): Optional override default walltime (time.time()) seconds after epoch of event dataformats (str): Image data format specification of the form CHW, HWC, HW, WH, etc.
示例:
from torch.utils.tensorboard import SummaryWriter import numpy as np from PIL import Image writer = SummaryWriter("logs") # 运行后当前目录下会多出一个 "logs" 文件夹 # 随便选一张图片的地址 img_PIL = Image.open(r"C:\Users\(写你自己的文件路劲)\.jpg") img_arr = np.array(img_PIL) print(img_arr.shape) # (512, 768, 3) writer.add_image(tag="test", img_tensor=img_arr, global_step=2, dataformats='HWC') # 注意dataformats参数的指定 writer.close()
通过该方式我们可以很直观的观察到我们在训练的时候给model提供了哪些数据,或者对model进行测试的时候可以直观观察每个阶段的输出结果。