【pytorch教程(2)】transforms

transforms作用

数据并不总是以训练机器学习算法所需的最终处理形式出现。 我们使用transforms对数据进行一些操作,使其适合于训练。
所有的TorchVision数据集都有两个参数—transform用于修改特性和target_transform用于修改标签—它们接受包含转换逻辑的可调用对象。 torchvision.transforms模块提供了几种常用的开箱即用的转换。

FashionMNIST功能是PIL Image格式,标签是整数。 对于训练,我们需要特征作为归一化张量,而标签作为one-hot独热编码张量。 为了进行这些变换,我们使用ToTensor和Lambda。

ToTensor()

ToTensor将PIL image或NumPy ndarray转换为FloatTensor。 并将图像像素强度值缩放到[0,1]

PIL Image -> PIL是由Fredrik Lundh及其贡献者开发的Python图像库。
Tensor Image -> shape是(C, H, W)的一个tensor,C是通道数,H和W分别为图像的高和宽。批量的Tensor Images即(B, C, H, W)的一个tensor,B是批量化处理中的图像数量。

张量像值的期望范围隐式地由张量dtype定义。 具有浮点型dtype的张量图像的值应该是[0,1]。具有整型dtype的张量图像的值应该是[0,MAX_DTYPE],其中MAX_DTYPE是该d类型可以表示的最大值。

Pad

Pad变换用一些像素值填充图像边界。 Pad的使用方法:
CLASS torchvision.transforms.Pad(padding, fill=0, padding_mode=‘constant’)

  • padding: int 或sequence 在每个边界填充。 如果提供了一个int,它将用于填充所有边界。 如果提供了长度为2的序列,这分别是左/右和顶部/底部的填充。 如果提供了一个长度为4的序列,这分别是左、上、右和下边框的填充。
  • fill :固定填充的像素填充值。 默认值为0。 如果是长度为3的元组,则分别填充R、G、B通道。 该值仅在padding_mode为常量时使用。 torch张量只支持数字。 PIL Image只支持int或tuple值。
  • padding_mode: padding的类别. constant, edge, reflect or symmetric. 默认值constant.
padded_imgs = [T.Pad(padding=padding)(orig_img) for padding in (3, 10, 30, 50)]
plot(padded_imgs)

在这里插入图片描述

Resize

将图片短边缩放至x,长宽比保持不变。尺寸指的是像素点的多少。
在这里插入图片描述
期望的输出大小。 如果size是一个像(h, w)这样的序列,输出大小将与此匹配。 如果size是int,图像的较小边缘将匹配到这个数字。 例如,如果height > width,则图像将被重新缩放为(size * height / width, size)。

Lambda

Lambda转换应用任何用户定义的Lambda函数。 这里,我们定义了一个函数来将整数转换为一个单热编码张量。 它首先创建一个大小为10的零张量(数据集中标签的数量),并调用scatter_,它在标签y给出的索引上赋值为1。

target_transform = Lambda(lambda y: torch.zeros(
    10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值