안녕하세요! 오늘은 pyTorch의 기본적인 내용을 정리하고자 합니다.
거두절미하고 달려볼까요~?
Tensor(텐서)란?
텐서란 데이터를 표현하는 단위입니다. 기본적으로 딥러닝 프레임워크는 다루고 있는 대상이 데이터이다보니 이를 표현할 수 있는 구조가 정해져있는데요, 파이토치에서의 표현을 알아보도록 하겠습니다.
- Scalar(스칼라)
우리가 흔히 알고있는 상수입니다. 하나의 값을 표현할 때 1개의 수치로 표현한 것을 의미합니다.
torch 모듈에 내장된 메서드나 기본적인 사칙연산 모두 적용됩니다.
import torch
scalar1 = torch.tensor([1.])
print(scalar1)
# tensor([1.])
scalar2 = torch.tensor([3.])
print(scalar2)
# tensor([3.])
torch.add(scalar1, scalar2)
print(scalar1 + scalar2)
# tensor([4.])
torch.sub(scalar1, scalar2)
print(scalar1 - scalar2)
# tensor([-2.])
torch.mul(scalar1, scalar2)
print(scalar1 * scalar2)
# tensor([3.])
torch.div(scalar1, scalar2)
print(scalar1 / scalar2)
# tensor([0.3333])
- Vector(벡터)
벡터는 하나의 값을 표현할 때 2개 이상의 수치로 표현한 것입니다.
스칼라와 동일한 속성을 지니지만 여러가지 수치값을 이용해 표현합니다.
import torch
vector1 = torch.tensor([1., 2., 3.])
print(vector1)
# tensor([1., 2., 3.])
vector2 = torch.tensor([4., 5., 6.])
print(vector2)
# tensor([4., 5., 6.])
torch.add(vector1, vector2)
print(vector1 + vector2)
# tensor([5., 6., 9.])
torch.sub(vector1, vector2)
print(vector1 - vector2)
# tensor([-3., -3., -3.])
torch.mul(vector1, vector2)
print(vector1 * vector2)
# tensor([4., 10., 18.])
torch.div(vector1, vector2)
print(vector1 / vector2)
# tensor([0.2500, 0.4000, 0.5000])
torch.dot(vector1, vector2)
# tensor([32.]) <- 벡터의 내적 값
- Matrix(행렬)
행렬은 2개 이상의 벡터 값을 통합해 구성된 값으로, 벡터 값 간 연산 속도를 빠르게 진행할 수 있는 선형 대수의 기본 단위입니다.
import torch
matrix = torch.tensor([[1., 2.], [3., 4.]])
print(matrix)
# tensor([[1., 2.],
# [3., 4.]])
matrix2 = torch.tensor([[5., 6.], [7., 8.]])
print(matrix2)
# tensor([[5., 6.],
# [7., 8.]])
# ================================================================
sum_matrix = matrix + matrix2
torch.add(matrix, matrix2)
print(sum_matrix)
# tensor([[6., 8.],
# [10., 12.]])
sub_matrix = matrix - matrix2
torch.sub(matrix, matrix2)
print(sub_matrix)
# tensor([[-4., -4.],
# [-4., -4.]])
mul_matrix = matrix * matrix2
torch.mul(matrix, matrix2)
print(mul_matrix)
# tensor([[5., 12.],
# [21., 32.]])
div_matrix = matrix / matrix2
torch.div(matrix, matrix2)
print(div_matrix)
# tensor([[0.2000, 0.3333],
# [0.4286, 0.5000]])
# =======================================
# 행렬 곱 연산 ▼
torch.matmul(matrix, matrix2)
# tensor([[19., 22.],
# [43., 50.]])
- Tensor(텐서)
행렬을 2차원 배열이라 표현할 수 있다면, 텐서는 2차원이상의 즉, 다차원 배열이라 표현할 수 있습니다.
이 역시 스칼라, 벡터, 행렬과 같은 논리로 적용됩니다.
import torch
tensor1 = torch.tensor([[[1., 2.],[3., 4.]],[[5., 6.],[7., 8.]]])
print(tensor1)
# tensor([[[1., 2.],
# [3., 4.]],
#
# [[5., 6.],
# [7., 8.]]])
tensor2 = torch.tensor([[[9., 10.],[11., 12.]],[[13., 14.],[15., 16.]]])
print(tensor2)
# tensor([[[9., 10.],
# [11., 12.]],
#
# [[13., 14.],
# [15., 16.]]])
# ===============================================================================
sum_tensor = tensor1 + tensor2
torch.add(tensor1, tensor2)
print(sum_tensor)
# tensor([[[10., 12.],
# [14., 16.]],
#
# [[18., 20.],
# [22., 24.]]])
sub_tensor = tensor1 - tensor2
torch.sub(tensor1, tensor2)
print(sub_tensor)
# tensor([[[-8., -8.],
# [-8., -8.]],
#
# [[-8., -8.],
# [-8., -8.]]])
mul_tensor = tensor1 * tensor2
torch.mul(tensor1, tensor2)
print(mul_tensor)
# tensor([[[9., 20.],
# [33., 48.]],
#
# [[65., 84.],
# [105., 128.]]])
div_tensor = tensor1 / tensor2
torch.div(tensor1, tensor2)
print(div_tensor)
# tensor([[[0.1111, 0.2000],
# [0.2727, 0.3333]],
#
# [[0.3846, 0.4286],
# [0.4667, 0.5000]]])
# ===============================================================================
# Tensor의 행렬곱 ▼
torch.matmul(tensor1, tensor2)
# tensor([[[31., 34.],
# [71., 78.]],
#
# [[155., 166.],
# [211., 226.]]])
'개발 > AI (ML, DL, DS, etc..)' 카테고리의 다른 글
[파이썬, 딥러닝, 파이토치] #5 "Mnist 설계" (0) | 2022.03.27 |
---|---|
[파이썬, 딥러닝, 파이토치] #4 "Autograd" (0) | 2022.03.27 |
[파이썬, 딥러닝, 파이토치] #2 "개발환경 구성하기(feat. RTX3070)" (0) | 2022.03.25 |
[파이썬, 딥러닝, 파이토치] #1 (0) | 2022.03.25 |
Google Tensorflow Developer Certification에 도전했습니다! (0) | 2022.02.22 |