728x90
F.softmax( )의 parameter dim에 대해 알아보자.
시각화가 가능한 tensor에 대해 1차원, 2차원일때를 관찰한다.
1차원 tensor
- F.softmax(input_tensor, dim=0)
- 1차원 tensor는 dim=0인 axis만 존재하므로 무조건 dim=0이다
1차원 tensor를 2차원 tensor처럼 착각해서 dim=0인데 왜 가로로 합이 1이지..? 라는 실수는 하지 말도록 하자.
import torch
import torch.nn.functional as F
# 3개의 원소를 가진 벡터 텐서 정의하고 소프트맥스 함수의 입력으로 사용
z = torch.FloatTensor([1, 2, 3])
hypothesis = F.softmax(z, dim=0)
print(hypothesis)
tensor([0.0900, 0.2447, 0.6652])
2차원 tensor
- F.softmax(input_tensor, dim=0 or 1)
- 2차원 tensor는 dim=0 or dim=1인 axis가 존재하므로 합을 1로 만들고 싶은 방향에 따라:
- 합을 (-y)방향으로 1로 맞추고 싶다면 dim=0
- 합을 (+x)방향으로 1로 맞추고 싶다면 dim=1
# 비용 함수 구현을 위해 임의로 3 x 5 행렬의 크기를 가진 텐서 생성
z = torch.rand(3, 5, requires_grad=True)
# 소프트맥스 함수 적용
hypothesis = F.softmax(z, dim=1)
print(hypothesis)
tensor([[0.3100, 0.1921, 0.1851, 0.1736, 0.1392],
[0.1383, 0.1525, 0.2907, 0.2161, 0.2024],
[0.2225, 0.1356, 0.2042, 0.2291, 0.2086]], grad_fn=<SoftmaxBackward0>)
728x90