今天继续更新 PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】的学习笔记。
1.PIL格式
from PIL import Image
img = Image.open("dataset/hymenoptera_data/train/bees/17209602_fe5a5a746f.jpg")
print(img)
2.Python 中 __call__的用法
下面通过一个例子来说明__call__的用法,并加入一个hello方法作为对比
# 定义一个类Person
class Person:
# 定义一个__call__函数,使得实例对象可以用括号的方式调用
def __call__(self, name):
print("__call__"+"Hello"+name)
# 定义一个hello函数,用于打印问候语
def hello(self,name):
print("hello"+name)
# 创建一个Person类的实例对象
person = Person()
# 调用__call__函数,可以直接使用实例对象加括号的方式调用
person("张三")
# 调用hello函数,传入name参数
person.hello("lisi")
结果如下:__call__可以直接在对象的括号中输入参数
普通方法中只能用对象的方法如person.hello中输入参数
__call__Hello张三
hellolisi
3.ToTensor() 输入参数为PIL格式或者ndarray格式转化为tensor
# 导入所需要的包和模块
from PIL import Image # 用于图像处理
from torch.utils.tensorboard import SummaryWriter # 用于可视化训练过程
from torchvision import transforms # 用于数据预处理
# 创建一个tensorboard的SummaryWriter对象,并指定日志保存路径
writer = SummaryWriter("logs")
# 打开一张图像
img = Image.open("dataset/hymenoptera_data/train/bees/17209602_fe5a5a746f.jpg")
print(img)
# 定义一个数据预处理的ToTensor实例
trans_totensor = transforms.ToTensor()
# 将图像转换为tensor
img_tensor = trans_totensor(img)
# 将tensor图像添加到writer日志中,指定一个tag名称
writer.add_image("ToTensor",img_tensor)
# 关闭writer对象
writer.close()
在Pytorch Terminal中输入:tensorboard --logdir=logs,即可得图像
5.Normalize()使用
具体例子:
# 打印tensor图像第1个通道第1行第1列的像素值
print(img_tensor[0][0][0])
# 定义一个均值为0.5,标准差为0.5的归一化变换
trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
# 将tensor图像进行归一化处理
img_norm = trans_norm(img_tensor)
# 打印归一化后tensor图像第1个通道第1行第1列的像素值
print(img_norm[0][0][0])
# 将未归一化的tensor图像和归一化后的tensor图像分别添加到writer日志中,指定相应的tag名称
writer.add_image("before", img_tensor)
writer.add_image("Normalize", img_norm)
# 关闭writer对象
writer.close()
结果如下:
tensor(0.4353)
tensor(-0.1294) # 2*0.4353-1=-0.1294
在Pytorch Terminal中输入:tensorboard --logdir=logs,即可得图像