모델에서 사용할 손실 함수와 옵티마이저를 지정합니다.

    코드 9-33 손실 함수와 옵티마이저 지정

    epochs = 1000+1
    print_epoch = 100
    LEARNING_RATE = 1e-2
    
    model = binaryClassification()
    model.to(device)
    print(model)
    BCE = nn.BCEWithLogitsLoss() ------ ①
    optimizer = torch.optim.SGD(model.parameters(), lr=LEARNING_RATE) ------ 훈련 데이터셋에서 무작위로 샘플을 추출하고 그 샘플만 이용해서 기울기를 계산

    ① 이진 분류(예제처럼 당뇨병인지 아닌지를 판별/예측하는 문제)에서 사용하는 손실 함수로는 이진 교차 엔트로피(Binary Cross Entropy Loss, BCELoss)BCEWithLogitsLoss 함수가 있습니다.

    BCELoss 손실 함수에 시그모이드(sigmoid) 함수가 함께 결합된 것이 BCEWithLogitsLoss 손실 함수입니다. 따라서 다음과 같이 표현할 수 있습니다.

    torch.nn.BCEWithLogitsLoss = torch.nn.BCELoss + torch.sigmoid

    다음은 앞에서 생성한 모델의 네트워크를 보여 줍니다.

    binaryClassification(
      (layer_1): Linear(in_features=8, out_features=64, bias=True)
      (layer_2): Linear(in_features=64, out_features=64, bias=True)
      (layer_out): Linear(in_features=64, out_features=1, bias=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.1, inplace=False)
      (batchnorm1): BatchNorm1d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (batchnorm2): BatchNorm1d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    )
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.