*Memos:
- My post explains target_transform and transform & target_transform.
- My post explains transforms and transform & target_transform & transforms.
- My post explains OxfordIIITPet().
- My post explains Resize().
- My post explains Lambda.
There are the differences between transform
, target_transform
and transforms
as shown below. *It's about origin
and transform
:
*Memos:
-
transform
is for the function which must have one parameter for transform. *Resize(), RandomRotation(), RandomHorizontalFlip(), etc also can be used. -
target_transform
is for the function which must have one parameter for target(label). -
transforms
is for the function which must have two parameters for both transform and target(label). *Resize(), RandomRotation(), RandomHorizontalFlip(), etc also can be used. - Both
transform
andtarget_transform
can be used at the same time. -
transforms
cannot be used withtransform
and/ortarget_transform
at the same time. - According to my experiments,
target_transform
andtransforms
are useless.
<origin>
from torchvision.datasets import OxfordIIITPet
origin_data = OxfordIIITPet(
root="data"
)
origin_data[0]
# (<PIL.Image.Image image mode=RGB size=394x500>, 0)
origin_data[50]
# (<PIL.Image.Image image mode=RGB size=500x333>, 1)
origin_data[100]
# (<PIL.Image.Image image mode=RGB size=333x500>, 2)
<transform>
from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import Resize
tfresize100_50_data = OxfordIIITPet(
root="data",
transform=Resize(size=[100, 50])
)
tfresize100_50_data[0]
# (<PIL.Image.Image image mode=RGB size=50x100>, 0)
tfresize100_50_data[50]
# (<PIL.Image.Image image mode=RGB size=50x100>, 1)
tfresize100_50_data[100]
# (<PIL.Image.Image image mode=RGB size=50x100>, 2)
from torchvision.datasets import OxfordIIITPet
def tf_func(transform):
return transform
tf_func_data = OxfordIIITPet(
root="data",
transform=tf_func
# transform=lambda transform: transform
)
tf_func_data[0]
# (<PIL.Image.Image image mode=RGB size=394x500>, 0)
tf_func_data[50]
# (<PIL.Image.Image image mode=RGB size=500x333>, 1)
tf_func_data[100]
# (<PIL.Image.Image image mode=RGB size=333x500>, 2)
from torchvision.datasets import OxfordIIITPet
def tf_func(transform):
return [0, 1, 2]
tf_func_data = OxfordIIITPet(
root="data",
transform=tf_func
# transform=lambda transform: [0, 1, 2]
)
tf_func_data[0]
# ([0, 1, 2], 0)
tf_func_data[50]
# ([0, 1, 2], 1)
tf_func_data[100]
# ([0, 1, 2], 2)
from torchvision.datasets import OxfordIIITPet
def tf_func():
return [0, 1, 2]
tf_func_data = OxfordIIITPet(
root="data",
transform=tf_func
# transform=lambda: [0, 1, 2]
)
tf_func_data[0]
# TypeError: tf_func() takes 0 positional arguments but 1 was given
from torchvision.datasets import OxfordIIITPet
def tf_func(transform, target):
return [0, 1, 2]
tf_func_data = OxfordIIITPet(
root="data",
transform=tf_func
# transform=lambda transform, target: [0, 1, 2]
)
tf_func_data[0]
# TypeError: tf_func() missing 1 required positional argument: 'target'