# torchvision.transforms
# pytorch torchvision transform
## 對PIL.Image進行變換
### class torchvision.transforms.Compose(transforms)
將多個`transform`組合起來使用。
`transforms`: 由`transform`構成的列表. 例子:
```
transforms.Compose([
transforms.CenterCrop(10),
transforms.ToTensor(),
])
```
### class torchvision.transforms.Scale(size, interpolation=2)
將輸入的`PIL.Image`重新改變大小成給定的`size`,`size`是最小邊的邊長。舉個例子,如果原圖的`height>width`,那么改變大小后的圖片大小是`(size*height/width, size)`。 **用例:**
```
from torchvision import transforms
from PIL import Image
crop = transforms.Scale(12)
img = Image.open('test.jpg')
print(type(img))
print(img.size)
croped_img=crop(img)
print(type(croped_img))
print(croped_img.size)
```
```
<class 'PIL.PngImagePlugin.PngImageFile'>
(10, 10)
<class 'PIL.Image.Image'>
(12, 12)
```
### class torchvision.transforms.CenterCrop(size)
將給定的`PIL.Image`進行中心切割,得到給定的`size`,`size`可以是`tuple`,`(target_height, target_width)`。`size`也可以是一個`Integer`,在這種情況下,切出來的圖片的形狀是正方形。
### class torchvision.transforms.RandomCrop(size, padding=0)
切割中心點的位置隨機選取。`size`可以是`tuple`也可以是`Integer`。
### class torchvision.transforms.RandomHorizontalFlip
隨機水平翻轉給定的`PIL.Image`,概率為`0.5`。即:一半的概率翻轉,一半的概率不翻轉。
### class torchvision.transforms.RandomSizedCrop(size, interpolation=2)
先將給定的`PIL.Image`隨機切,然后再`resize`成給定的`size`大小。
### class torchvision.transforms.Pad(padding, fill=0)
將給定的`PIL.Image`的所有邊用給定的`pad value`填充。 `padding:`要填充多少像素 `fill:`用什么值填充 例子:
```
from torchvision import transforms
from PIL import Image
padding_img = transforms.Pad(padding=10, fill=0)
img = Image.open('test.jpg')
print(type(img))
print(img.size)
padded_img=padding(img)
print(type(padded_img))
print(padded_img.size)
```
```
<class 'PIL.PngImagePlugin.PngImageFile'>
(10, 10)
<class 'PIL.Image.Image'>
(30, 30) #由于上下左右都要填充10個像素,所以填充后的size是(30,30)
```
## 對Tensor進行變換
### class torchvision.transforms.Normalize(mean, std)
給定均值:`(R,G,B)` 方差:`(R,G,B)`,將會把`Tensor`正則化。即:`Normalized_image=(image-mean)/std`。
## Conversion Transforms
### class torchvision.transforms.ToTensor
把一個取值范圍是`[0,255]`的`PIL.Image`或者`shape`為`(H,W,C)`的`numpy.ndarray`,轉換成形狀為`[C,H,W]`,取值范圍是`[0,1.0]`的`torch.FloadTensor`
```
data = np.random.randint(0, 255, size=300)
img = data.reshape(10,10,3)
print(img.shape)
img_tensor = transforms.ToTensor()(img) # 轉換成tensor
print(img_tensor)
```
### class torchvision.transforms.ToPILImage
將`shape`為`(C,H,W)`的`Tensor`或`shape`為`(H,W,C)`的`numpy.ndarray`轉換成`PIL.Image`,值不變。
## 通用變換
### class torchvision.transforms.Lambda(lambd)
使用`lambd`作為轉換器。
- PyTorch 中文文檔
- 主頁
- 自動求導機制
- CUDA語義
- 擴展PyTorch
- 多進程最佳實踐
- 序列化語義
- torch
- torch.Tensor
- torch.Storage
- torch.nn
- torch.nn.functional
- torch.autograd
- torch.optim
- torch.nn.init
- torch.multiprocessing
- torch.legacy
- torch.cuda
- torch.utils.ffi
- torch.utils.data
- torch.utils.model_zoo
- torchvision
- torchvision.datasets
- torchvision.models
- torchvision.transforms
- torchvision.utils
- 致謝