*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)
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)
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>)
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])
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
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
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'
<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