어떤가요? 앞에서 수십 줄 넘게 구현한 코드가 의미 없다고 느껴지나요? 물론 향후에는 연습을 하든 연구를 하든 사전 훈련된 모델을 호출하여 사용하게 될 것입니다. 하지만 책에서는 VGG 모델의 네트워크를 어떻게 구현하고 사용하는지 방법을 알려 주고자 고생스럽지만 네트워크를 정의했던 것입니다. 이러한 수고를 통해 우리는 다음과 같이 My_Vgg 같은 새로운 config를 정의하여 사용할 수 있습니다.
vgg11_config = [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'] vgg13_config = [64, 64, 'M', 128, 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'] vgg16_config = [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', 512, 512, 512, 'M'] vgg19_config = [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M', 512, 512, 512, 512, 'M'] My_Vgg = [64, 64, 64, 'M', 128, 128, 128, 'M', 256, 256, 256, 'M']
이제 이미지에 대한 전처리 부분을 정의합니다.
코드 6-47 이미지 데이터 전처리
train_transforms = transforms.Compose([
transforms.Resize((256, 256)),
transforms.RandomRotation(5),
transforms.RandomHorizontalFlip(0.5),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])]) ------ ①
test_transforms = transforms.Compose([
transforms.Resize((256, 256)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])