Pytorch学习(二)tensorboard、transform使用

参考视频:https://www.bilibili.com/video/BV1hE411t7RN?p=10&spm_id_from=pageDriver

1、tensorboard使用

        1.1tensorboard中写入数据

                训练过程loss变化,某一步模型的训练结果可视化(可以检测不同阶段的模型输出)。

from torch.utils.tensorboard import SummaryWriter       # 按住ctrl键,鼠标放上边变为蓝色,点击

writer = SummaryWriter("logs")

# writer.add_image()                # 添加图像
 for i in range (100):
        writer.add_scalar("y = x", i, i)               # 添加标量

writer.close()

查看存储数据:   tensorboard --logdir = logs;  logdir = 事件文件所在文件夹名,(不定义时,会自动创建)

一台服务器可能有许多人训练网络,所以我们可以指定tensorboard的端口:

        tensorboard --logdir = logs --port = 6007

        1.2 tensorboard中写入图像

                writer.add_image()中,输入图像必须是array或者tensor,故需要在add_image()中指定shape中每一个数字/维表示的含义。

img = Image.open(路径)
img_array = np.array(img)
writer.add_image("test", img_array, 1, dataformats = 'HWC')

        1.3writer.add_graph(input_model):

        可以输出神经网络结果图。

 

2、transform使用

 structure部分可以直接查看类的结构。

 报错,引入库:Alt+N+回车,或者直接点箭头,导入库。

ctrl+p可以看需要哪个参数。

        把图片转换为tensor类:

# 创建一个tensor类型对象
trans_tensor = transforms.ToTensor()
# 实例化对象
tensor_img = trans_tensor(img)

2.1常见的transform

                pytorch中的__call__(),

                如果定义了__call__(),则进行实例化对象时,可直接传参,调用该方法;否则需要使用点的方式调用方法。

class Person:
    def __call__(self, name):
        print("__call__" + "hello" + name)

    def hello(self, name):
        print("hello" + name)

person = Person()
# 实例化对象直接调用
person("zhangsan")

# 使用.调用方法
person.hello("lisi")

        compose(),把所有操作整合在一起,

Compose()中参数需要的是一个列表,python中列表的形式是[数据1,数据2,数据3...],在compose中数据需要是transforms类型,故:Compose([transforms参数1,transforms参数2,...])

        ToTensor()把图像变为tensor进行处理。

        Normlize(),进行归一化。

        ToPILImage把tensor类型数据转化为PIL。

        Resize(),如果只给一个边,会用最小的边匹配该值,并进行一个等比的缩放(不改变宽和高的比例)。

 RandomCrop()随机裁剪,

 与大小写无关进行的匹配。


版权声明:本文为laner__gg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。