[Pytorch 다시보기] - Name some different components of PyTorch!! PyTorch의 다양한 구성요소를 알아봅시다!

Tensors : Tensors are very homogeneous to the Numpy array and it is also multi-dimensional. The Tensors are accessible in PyTorch as a torch. Some examples are torch.CharTen , torch.IntTensor , torch.FloatTensor , etc.

 

텐서 (Tensors): 텐서는 Numpy array와 매우 유사하며 다차원입니다. 텐서는 PyTorch에서 torch.을 통해 접근할 수 있습니다. 예를 들어 torch.CharTensor, torch.IntTensor, torch.FloatTensor 등이 있습니다.

 

import torch

char_tensor = torch.CharTensor([1, 2, 3])
int_tensor = torch.IntTensor([1, 2, 3])
float_tensor = torch.FloatTensor([1.0, 2.0, 3.0])

print("Char Tensor:", char_tensor)
print("Int Tensor:", int_tensor)
print("Float Tensor:", float_tensor)

multi_dim_tensor = torch.FloatTensor([[1, 2], [3, 4]])
print("Multi-dimensional Tensor:\n", multi_dim_tensor)

output:
Char Tensor: tensor([1, 2, 3], dtype=torch.int8)
Int Tensor: tensor([1, 2, 3], dtype=torch.int32)
Float Tensor: tensor([1., 2., 3.])
Multi-dimensional Tensor:
 tensor([[1., 2.],
        [3., 4.]])

 

Variable : A variable works as a wrapper around the Tensor to clutch the gradient. You can find variables under the torch.autograd in the form of a torch.autograd.Variable.

 

변수 (Variable): 변수는 텐서를 감싸서 그래디언트를 유지하는 역할을 합니다. 변수는 torch.autograd 아래에서 torch.autograd.Variable 형태로 찾을 수 있습니다.

→ 최신 버전의 PyTorch에서는 torch.autograd.Variable 이 더 이상 필요하지 않으며, 텐서가 자동으로 그래디언트를 추적합니다. 따라서 예시에서는 Variable을 사용하지 않았습니다.

 

Parameters: The work of a Parameter is to wrap the variable and we use it when the Tensors of a module do not possess a gradient. We can find parameters under the torch.nn in the form of torch.nn.Parameter.

 

파라미터 (Parameters): 파라미터의 역할은 변수를 감싸는 것이며, 모듈의 텐서가 그래디언트를 가지지 않을 때 이를 사용합니다. 파라미터는 torch.nn 아래에서 torch.nn.Parameter 형태로 찾을 수 있습니다.

 

import torch.nn as nn

param = nn.Parameter(torch.randn(2, 2), requires_grad=True)
print("Parameter:\n", param)

class SimpleModule(nn.Module):
    def __init__(self):
        super(SimpleModule, self).__init__()
        self.weight = nn.Parameter(torch.randn(2, 2))
    
    def forward(self, x):
        return torch.matmul(x, self.weight)

module = SimpleModule()
print("Module Parameter:\n", module.weight)

output:
Parameter:
 Parameter containing:
tensor([[-0.5672, -0.5706],
        [ 1.5980,  0.1115]], requires_grad=True)
Module Parameter:
 Parameter containing:
tensor([[-0.0392,  1.4112],
        [-0.6556,  0.8576]], requires_grad=True)

 

Functions: Functions do not possess any memory and their work is to transform the operations. Some examples of function are torch.sum , torch.log , etc. Functions are implemented using torch.nn.functional.

 

함수 (Functions): 함수는 메모리를 가지지 않으며 연산을 변환하는 역할을 합니다. 함수의 예로는 torch.sum, torch.log 등이 있습니다. 함수는 torch.nn.functional을 사용하여 구현됩니다.

 

import torch
import torch.nn.functional as F

# 텐서 생성
x = torch.tensor([1.0, 2.0, 3.0])

# 합계 함수 사용
sum_x = torch.sum(x)
print("Sum of x:", sum_x)

# 로그 함수 사용
log_x = torch.log(x)
print("Log of x:", log_x)

# 활성화 함수 (ReLU) 사용
relu_x = F.relu(x - 2.5)
print("ReLU(x - 2.5):", relu_x)

Sum of x: tensor(6.)
Log of x: tensor([0.0000, 0.6931, 1.0986])
ReLU(x - 2.5): tensor([0.0000, 0.0000, 0.5000])

 

Modules: Modules are the base class of all neural networks and they also can contain different functions, modules, and parameters. It is efficient in storing learnable weights and states. Modules can be applied as torch.nn.Linear , torch.nn.Conv2d , etc.

 

모듈 (Modules): 모듈은 모든 신경망의 기본 클래스이며, 다양한 함수, 모듈, 파라미터를 포함할 수 있습니다. 학습 가능한 가중치와 상태를 효율적으로 저장하는 데 유용합니다. 모듈은 torch.nn.Linear, torch.nn.Conv2d 등으로 적용할 수 있습니다.

 

import torch
import torch.nn as nn

# 입력 채널 1, 출력 채널 1, 커널 사이즈 3인 합성곱 계층 정의
conv = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3)

# 임의의 입력 텐서 (배치 크기 1, 채널 1, 높이 5, 너비 5)
input_tensor = torch.randn(1, 1, 5, 5)
print("Input Tensor Shape:", input_tensor.shape)

# 합성곱 계층을 통과한 출력
output = conv(input_tensor)
print("Output Tensor Shape:", output.shape)

# 학습 가능한 파라미터
print("Conv Weights:", conv.weight)
print("Conv Bias:", conv.bias)

Input Tensor Shape: torch.Size([1, 1, 5, 5])
Output Tensor Shape: torch.Size([1, 1, 3, 3])
Conv Weights: Parameter containing:
tensor([[[[ 0.3037, -0.2643,  0.0839],
          [-0.1434, -0.0365, -0.2495],
          [ 0.3036, -0.2447,  0.1782]]]], requires_grad=True)
Conv Bias: Parameter containing:
tensor([0.1171], requires_grad=True)

 

반응형