ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [pytorch] nn.Sigmoid 알아보기
    AI-ML 2023. 10. 30. 11:25
    728x90
    반응형

    - 목차

     

    키워드.

    • - Activation Function
    • - Sigmoid

     

    들어가며.

    Deep Learning 에는 Activation Layer 가 존재합니다.

    Neural Network 내부의 각 뉴런은 입력 텐서와 자신의 가중치를 연산하여 출력 텐서를 생성하는데요.

    이 출력 텐서는 다음 단계로 Activation Layer 로 진입하게 됩니다.

    Activation Layer 의 역할은 한가지입니다.

    기준치 이상의 값만을 다음 Layer 로 출력하는 것입니다.

     

    예를 들어, Activation Layer 를 통과할 수 있는 기준값을 100 으로 설정합니다.

    그리고 Input Tensor 는 [99, 100, 101] 을 가집니다.

    이 Input Tensor 는 Activation Layer 에 입력되고, Output Tensor 가 생성되게 되는데요.

    Output Tensor 의 모습은 아마 다음과 같을 것입니다.

    Output Tensor : [0, 0, 1] 또는 [0, 0, 100]

    즉, 기준치를 넘지 못하는 Tensor 의 item 은 0 으로 변경해버리고 이는 Neural Network 의 관점에서 해당 뉴런이 Output 에 영향을 주지 않음을 뜻합니다.

     

    대표적인 Activation Layer 에서 사용되는 함수가 Sigmoid 함수입니다.

    Sigmoid 함수는 아래와 같은 모습을 갖습니다.

    $$ Sigmoid(X) =  \frac{1}{1 + e^{-X}} $$

    출처 : https://www.codecademy.com/resources/docs/ai/neural-networks/sigmoid-activation-function

     

    이 함수의 마치 곡선 형태의 Step Function 과 유사하며, 0 또는 1 의 값을 가집니다.

    즉, 미분 가능한 Step Function 으로 생각할 수 있습니다.

    출처 : https://www.geeksforgeeks.org/stair-step-function/

     

     

     

    nn.Sigmoid 사용해보기.

    nn.Sigmoid 의 사용법은 아래와 같습니다.

    torch.nn 모듈 내부의 Sigmoid 클래스를 활용하여 Sigmoid 객체를 생성할 수 있습니다.

    객체를 생성하기 위한 별다른 인자를 존재하지 않구요.

    Input Tensor 를 Element-wise 방식으로 Sigmoid 연산을 수행합니다.

    import torch 
    import torch.nn as nn
    
    sigmoid = nn.Sigmoid()
    
    input_tensor = torch.linspace(-100, 100, 1000)
    sigmoid(input_tensor)

     

     

    아래와 같이 다양한 입력 텐서에 대해서 동일한 Shape 의 출력 텐서를 생성합니다.

    그리고 element-wise 방식으로 Sigmoid 연산이 수행됨을 확인할 수 있습니다.

     

    sigmoid(torch.tensor(5))
    # tensor(0.9933)
    
    sigmoid(torch.tensor(0))
    # tensor(0.5000)
    
    sigmoid(torch.tensor(-1))
    # tensor(0.2689)
    
    sigmoid(torch.tensor([-10, 0, 10]))
    # tensor([4.5398e-05, 5.0000e-01, 9.9995e-01])
    
    sigmoid(torch.tensor([[[-10, 0, 10]]]))
    # tensor([[[4.5398e-05, 5.0000e-01, 9.9995e-01]]])

     

    반응형

    'AI-ML' 카테고리의 다른 글

    [pytorch] optim.SGD 알아보기  (0) 2023.12.13
    [Statistics] Odds, Logit 알아보기  (0) 2023.11.24
    Collaborative Filtering 이해하기  (0) 2023.09.25
    [ CNN ] Feature Map 이해하기  (0) 2023.09.19
    [ pytorch ] ConvTranspose2d 알아보기  (0) 2023.09.11
Designed by Tistory.