transform vs target_transform vs transforms in PyTorch (3)
Super Kai (Kazuya Ito)

Super Kai (Kazuya Ito) @hyperkai

About: I'm a web developer. Buy Me a Coffee: ko-fi.com/superkai SO: stackoverflow.com/users/3247006/super-kai-kazuya-ito X(Twitter): twitter.com/superkai_kazuya FB: facebook.com/superkai.kazuya

Joined:
Oct 21, 2021

transform vs target_transform vs transforms in PyTorch (3)

Publish Date: Jun 4
0 0

Buy Me a Coffee

*Memos:

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

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

<transforms>

from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import Resize

tfsresize100_50_func_data = OxfordIIITPet(
    root="data",
    transforms=Resize(size=[100, 50])
)

tfsresize100_50_func_data[0]
# (<PIL.Image.Image image mode=RGB size=50x100>, 0)

tfsresize100_50_func_data[50]
# (<PIL.Image.Image image mode=RGB size=50x100>, 1)

tfsresize100_50_func_data[100]
# (<PIL.Image.Image image mode=RGB size=50x100>, 2)
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet

def tfs_func(transform, target):
    return [transform, target]

tfs_func_data = OxfordIIITPet(
    root="data",
    transforms=tfs_func
    # transforms=lambda transform, target: [transform, target]
)

tfs_func_data[0]
# (<PIL.Image.Image image mode=RGB size=394x500>, 0)

tfs_func_data[50]
# (<PIL.Image.Image image mode=RGB size=500x333>, 1)

tfs_func_data[100]
# (<PIL.Image.Image image mode=RGB size=333x500>, 2)
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet

def tfs_func(transform, target):
    return [target, transform]

tfs_func_data = OxfordIIITPet(
    root="data",
    transforms=tfs_func
    # transforms=lambda transform, target: [target, transform]
)

tfs_func_data[0]
# (0, <PIL.Image.Image image mode=RGB size=394x500>)

tfs_func_data[50]
# (1, <PIL.Image.Image image mode=RGB size=500x333>)

tfs_func_data[100]
# (2, <PIL.Image.Image image mode=RGB size=333x500>)
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet

def tfs_func(transform, target):
    return [[0, 1, 2], [3, 4, 5]]

tfs_func_data = OxfordIIITPet(
    root="data",
    transforms=tfs_func
    # transforms=lambda transform, target: [[0, 1, 2], [3, 4, 5]]
)

tfs_func_data[0]
# ([0, 1, 2], [3, 4, 5])

tfs_func_data[50]
# ([0, 1, 2], [3, 4, 5])

tfs_func_data[100]
# ([0, 1, 2], [3, 4, 5])
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet

def tfs_func():
    return [[0, 1, 2], [3, 4, 5]]

tfs_func_data = OxfordIIITPet(
    root="data",
    transforms=tfs_func
    # transforms=lambda: [[0, 1, 2], [3, 4, 5]]
)

tfs_func_data[0]
# TypeError: tfs_func() takes 0 positional arguments but 2 were given
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet

def tfs_func(transform):
    return [[0, 1, 2], [3, 4, 5]]

tfs_func_data = OxfordIIITPet(
    root="data",
    transforms=tfs_func
    # transforms=lambda transform: [[0, 1, 2], [3, 4, 5]]
)

tfs_func_data[0]
# TypeError: tfs_func() takes 1 positional argument but 2 were given
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import OxfordIIITPet

def tfs_func(transform, target, param):
    return [[0, 1, 2], [3, 4, 5]]

tfs_func_data = OxfordIIITPet(
    root="data",
    transforms=tfs_func
    # transforms=lambda transform, target, param: [[0, 1, 2], [3, 4, 5]]
)

tfs_func_data[0]
# TypeError: tfs_func() missing 1 required positional argument: 'param'
Enter fullscreen mode Exit fullscreen mode

<transform & target_transform & transforms>

from torchvision.datasets import OxfordIIITPet

def tf_func(transform):
    return [0, 1, 2]

def tgt_func(target):
    return [3, 4, 5]

def tfs_func(transform, target):
    return [[0, 1, 2], [3, 4, 5]]

tf_tfs_func_data = OxfordIIITPet(
    root="data",
    transform=tf_func,
    transforms=tfs_func
    # transform=lambda transform: [0, 1, 2],
    # transforms=lambda transform, target: [[0, 1, 2], [3, 4, 5]]
)
# ValueError: Only transforms or transform/target_transform can be passed
# as argument

tgt_tfs_func_data = OxfordIIITPet(
    root="data",
    target_transform=tgt_func,
    transforms=tfs_func
    # target_transform=lambda target: [3, 4, 5],
    # transforms=lambda transform, target: [[0, 1, 2], [3, 4, 5]]
)
# ValueError: Only transforms or transform/target_transform can be passed
# as argument

tf_tgt_tfs_func_data = OxfordIIITPet(
    root="data",
    transform=tf_func,
    target_transform=tgt_func,
    transforms=tfs_func
    # transform=lambda transform: [0, 1, 2],
    # target_transform=lambda target: [3, 4, 5],
    # transforms=lambda transform, target: [[0, 1, 2], [3, 4, 5]]
)
# ValueError: Only transforms or transform/target_transform can be passed
# as argument
Enter fullscreen mode Exit fullscreen mode

Comments 0 total

    Add comment