1、TensorBoard的使用 2、图像变换,Transform的使用
transform在Dateset中很常用,主要是对图像进行一个变化,例如统一到统一的尺寸;或对图像中的数据进行每一个类的转化。若要演示transform的结果,肯定涉及到运行一个方法后展示这个图像,最简单的方法就是TensorBoard。可是使用它展示loss变化,进行模型选择。展示out_put。
安装TensorBoard
pip install tensorboard
SummaryWriter类使用
“ctrl+点击查看help”
class SummaryWriter(object):
"""Writes entries directly to event files in the log_dir to be
consumed by TensorBoard.
The `SummaryWriter` class provides a high-level API to create an event file
in a given directory and add summaries and events to it. The class updates the
file contents asynchronously. This allows a training program to call methods
to add data to the file directly from the training loop, without slowing down
training.
"""
由初始化可以看出其需要几个参数,常用第一个,“log_dir”文件位置。
def __init__(self, log_dir=None, comment='', purge_step=None, max_queue=10,
flush_secs=120, filename_suffix=''):
创建实例
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('logs')
writer.add_image()
# scalar标量
writer.add_scalar()
writer.close()
add_scalar()方法
构造train_loss类似的方式
(首先将add_image()方法注释掉,用不上)
参数解释
def add_scalar(
self,
tag,
scalar_value,
global_step=None,
walltime=None,
new_style=False,
double_precision=False,
):
创建一个实例y=x
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('logs')
# writer.add_image()
# y=x
for i in range(100):
writer.add_scalar("y=x",i,i) # scalar标量
writer.close()
尝试打开log文件
可使用conda命令或pycharm的Terminal终端:
tensorboard --logdir=logs
可按ctrl+c进行取消
若多人访问地址,防止冲突:选择6007端口
tensorboard --logdir=logs --port=6007
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('logs')
# writer.add_image()
# y=2x
for i in range(100):
writer.add_scalar("y=2x",2*i,i) # scalar标量
writer.close()
存在一种问题情况,如不更改参数tag,仅更改参数scalar_value:3*i
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('logs')
# writer.add_image()
# y=2x
for i in range(100):
writer.add_scalar("y=2x",3*i,i) # scalar标量
writer.close()
会出现和上一次的重合
两种解决办法:1删除所有的log文件再运行一次;2新建子文件夹放进去日志文件
接下来讲解该怎么向里面写入一些图像