Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regarding transforms #64

Closed
agSidharth opened this issue Jun 10, 2021 · 5 comments
Closed

Regarding transforms #64

agSidharth opened this issue Jun 10, 2021 · 5 comments

Comments

@agSidharth
Copy link

agSidharth commented Jun 10, 2021

Can somebody please let me know the transforms used in cfir10 and mnist datasets?
Thank you.

@ain-soph
Copy link
Owner

ain-soph commented Jun 10, 2021

Actually I never test MNIST, let me know if any issue exists. The transform for MNIST is a simple ToTensor
And note that the normalization parameters are embedded into model as a layer rather than dataset transform. So that all image tensors range in [0, 1]

elif self.data_shape in ([3, 16, 16], [3, 32, 32]):
transform = get_transform_cifar(mode, auto_augment=self.auto_augment,
cutout=self.cutout, cutout_length=self.cutout_length,
data_shape=self.data_shape)
else:
transform = transforms.ToTensor()

def get_transform_cifar(mode: str, auto_augment: bool = False,
cutout: bool = False, cutout_length: int = None,
data_shape: list[int] = [3, 32, 32]) -> transforms.Compose:
if mode != 'train':
return transforms.ToTensor()
cutout_length = data_shape[-1] // 2 if cutout_length is None else cutout_length
transform_list = [
transforms.RandomCrop(data_shape[-2:], padding=data_shape[-1] // 8),
transforms.RandomHorizontalFlip(),
]
if auto_augment:
transform_list.append(transforms.AutoAugment(transforms.AutoAugmentPolicy.CIFAR10))
transform_list.append(transforms.ToTensor())
if cutout:
transform_list.append(Cutout(cutout_length))
return transforms.Compose(transform_list)

@ain-soph
Copy link
Owner

CUDA_VISIBLE_DEVICES=0 python examples/train.py --verbose 1 --color --epoch 600 --batch_size 96 --cutout --grad_clip 5.0 --lr 0.025 --lr_scheduler --save --dataset cifar10 --model resnet18_comp

And you will get ResNet18 (first convolutional layer compressed version) with 96.5% accuracy.

@agSidharth
Copy link
Author

agSidharth commented Jun 11, 2021

ya so I was testing these models manually and the transform that worked for me is

transform.Compose([transforms.ToTensor(),transforms.Normalize([0.49139968, 0.48215827, 0.44653124],[0.24703233, 0.24348505, 0.26158768]))

To give the expected accuracy.

@ain-soph
Copy link
Owner

I remembered that Without data augment such as random crop and cutout, the model accuracy won’t exceed 92%. But I could be wrong.

And if you use my model class and put normalization into the transform, you’d better set the model transform layer mean/std to be 0/1.

@ain-soph
Copy link
Owner

Close this issue if you have no further concern.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants