-
[pytorch] nn.Sigmoid 알아보기AI-ML 2023. 10. 30. 11:25728x90반응형
- 목차
키워드.
- - 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}} $$
이 함수의 마치 곡선 형태의 Step Function 과 유사하며, 0 또는 1 의 값을 가집니다.
즉, 미분 가능한 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