DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on • Edited on

transform vs target_transform vs transforms in PyTorch (2)

Buy Me a Coffee

*Memos:

  • My post explains origin and transform.
  • My post explains transforms and transform & target_transform & transforms.

There are the differences between transform, target_transform and transforms as shown below. *It's about target_transform and transform & target_transform:

<target_transform>

from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import Resize tgtresize100_50_data = OxfordIIITPet( root="data", target_transform=Resize(size=[100, 50]) ) tgtresize100_50_data[0] # (<PIL.Image.Image image mode=RGB size=394x500>, 0)  tgtresize100_50_data[50] # (<PIL.Image.Image image mode=RGB size=500x333>, 1)  tgtresize100_50_data[100] # (<PIL.Image.Image image mode=RGB size=333x500>, 2) 
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet def tgt_func(target): return target tgt_func_data = OxfordIIITPet( root="data", target_transform=tgt_func # target_transform=lambda target: target ) tgt_func_data[0] # (<PIL.Image.Image image mode=RGB size=394x500>, 'World')  tgt_func_data[50] # (<PIL.Image.Image image mode=RGB size=500x333>, 'World')  tgt_func_data[100] # (<PIL.Image.Image image mode=RGB size=333x500>, 'World') 
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet def tgt_func(target): return [3, 4, 5] tgt_func_data = OxfordIIITPet( root="data", target_transform=tgt_func # target_transform=lambda target: [3, 4, 5] ) tgt_func_data[0] # (<PIL.Image.Image image mode=RGB size=333x500>, [3, 4, 5])  tgt_func_data[50] # (<PIL.Image.Image image mode=RGB size=500x333>, [3, 4, 5])  tgt_func_data[100] # (<PIL.Image.Image image mode=RGB size=333x500>, [3, 4, 5]) 
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet def tgt_func(): return [3, 4, 5] tgt_func_data = OxfordIIITPet( root="data", target_transform=tgt_func # target_transform=lambda: [3, 4, 5] ) tgt_func_data[0] # TypeError: tgt_func() takes 0 positional arguments but 1 was given 
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet def tgt_func(transform, target): return [3, 4, 5] tgt_func_data = OxfordIIITPet( root="data", target_transform=tgt_func # target_transform=lambda transform, target: [3, 4, 5] ) tgt_func_data[0] # TypeError: tgt_func() missing 1 required positional argument: 'target' 
Enter fullscreen mode Exit fullscreen mode

<transform & target_transform>

from torchvision.datasets import OxfordIIITPet def tf_func(transform): return transform def tgt_func(target): return target tf_tgt_func_data = OxfordIIITPet( root="data", transform=tf_func, target_transform=tgt_func # transform=lambda transform: transform,  # target_transform=lambda target: target ) tf_tgt_func_data[0] # (<PIL.Image.Image image mode=RGB size=394x500>, 0)  tf_tgt_func_data[50] # (<PIL.Image.Image image mode=RGB size=500x333>, 1)  tf_tgt_func_data[100] # (<PIL.Image.Image image mode=RGB size=333x500>, 2) 
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet def tf_func(transform): return [0, 1, 2] def tgt_func(target): return [3, 4, 5] tf_tgt_func_data = OxfordIIITPet( root="data", transform=tf_func, target_transform=tgt_func # transform=lambda transform: [0, 1, 2],  # target_transform=lambda target: [3, 4, 5] ) tf_tgt_func_data[0] # ([0, 1, 2], [3, 4, 5])  tf_tgt_func_data[50] # ([0, 1, 2], [3, 4, 5])  tf_tgt_func_data[100] # ([0, 1, 2], [3, 4, 5]) 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.