참고용으로 모델의 파라미터 값들을 확인해 보겠습니다.
코드 5-18 모델의 파라미터 값 확인
for name, param in resnet18.named_parameters(): ------ model.named_parameters()는 모델에 접근하여 파라미터 값들을 가져올 때 사용
if param.requires_grad:
print(name, param.data)
다음은 파라미터 값들을 가져온 결과입니다. 다음 결과와 같이 파라미터는 weight와 bias가 사용되고 있습니다.
fc.weight tensor([[ 0.0290, -0.0368, -0.0243, ..., 0.0268, 0.0337, 0.0388], [ 0.0173, -0.0082, 0.0215, ..., -0.0272, -0.0227, -0.0236]]) fc.bias tensor([-0.0427, -0.0383])
이제 모델 학습 준비를 위해 모델의 객체를 생성하고 손실 함수를 정의합니다.
코드 5-19 모델 객체 생성 및 손실 함수 정의
model = models.resnet18(pretrained=True) ------ 모델의 객체 생성
for param in model.parameters(): ------ 모델의 합성곱층 가중치 고정
param.requires_grad = False
model.fc = torch.nn.Linear(512, 2)
for param in model.fc.parameters(): ------ 완전연결층은 학습
param.requires_grad = True
optimizer = torch.optim.Adam(model.fc.parameters())
cost = torch.nn.CrossEntropyLoss() ------ 손실 함수 정의
print(model)