目录
2.transform中compose里面的__call__用法
1.transforms的导入
from torchvision import transforms
2.transform中compose里面的__call__用法
下划线表示内置函数
内置函数和函数区别的例子:
class Person:
def __call__(self, name): # 内置函数
print("__call__" + "Hello" + name)
def hello(self, name):
print("Hello" + name)
person1 = Person()
person1("Wym") # 内置函数不需要用 . 调用内置函数
person1.hello("Wym")
输出结果
__call__HelloWym
HelloWym
结论:内置函数不需要用 . 调用内置函数,直接 对象()
tips:按住Ctrl + P 有提示需要什么参数
3.ToTensor的使用
(1)TensorBoard的配置
创建logs文件夹
writer = SummaryWriter("logs")
(2)将图像打开
img = Image.open("image/9715481_b3cb4114ff.jpg")
(3)创建对象,并使用对象的功能,将图像转化成Tensor数据类型的
(Tensor数据类型的可以放到TensorBoard中)
trans_ToTensor = transforms.ToTensor()
img_Tensor = trans_ToTensor(img)
(4)添加图像到writer中
writer.add_image("ToTenser", img_Tensor) # 添加Tensor数据类型的图像到writer中
writer.close() # 添加完图像必须跟一个
(5)终端调用并打开
--logdir=logs :将logs文件夹下的图像传到tensorboard中
--port=6007 :地址6007
tensorboard --logdir=logs --port=6007
打开6007,其中tag:ToTensor
4.Normalize(归一化)的使用
计算公式
output[channel] = (input[channel] - mean[channel]) / std[channel]
# Normalize
print(img_Tensor[0][0][0]) # 图像像素的第一个点
trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5]) # 每个通道均值和标准差
img_norm = trans_norm(img_Tensor) # normalize只能处理tensor数据类型
print(img_norm[0][0][0])
writer.add_image("img_normalize", img_norm) # 处理之后的图像添加到logs中
writer.close()
归一化后的图像
完整代码
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
writer = SummaryWriter("logs") # 创建logs文件夹
img = Image.open("image/9715481_b3cb4114ff.jpg") # 打开相对路径下的图像
# ToTensor
trans_ToTensor = transforms.ToTensor() # 创建对象
img_Tensor = trans_ToTensor(img) # img转为Tensor数据类型
writer.add_image("ToTenser", img_Tensor) # 添加Tensor数据类型的图像到writer中
# Normalize
print(img_Tensor[0][0][0]) # 图像像素的第一个点
trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5]) # 每个通道均值和标准差
img_norm = trans_norm(img_Tensor) # normalize只能处理tensor数据类型
print(img_norm[0][0][0])
writer.add_image("img_normalize", img_norm) # 处理之后的图像添加到logs中
writer.close()