오늘은 파이토치를 다루기 위해 중요한 기초 지식들 중 텐서
에 대해 다루어볼 예정입니다.
Source : https://hadrienj.github.io/posts/Deep-Learning-Book-Series-2.1-Scalars-Vectors-Matrices-and-Tensors/
scalar
, vector
, matrix
,tensor
로 분류할 수 있습니다.💻 코드
import torch
# 텐서 메서드를 이용해 스칼라 값 정의
scalar = torch.tensor([2.])
print(scalar) # 값 출력
print(scalar.shape) # 사이즈 출력
💻 결과
tensor([2.])
torch.Size([1])
※ 여기서 잠깐 ※
💡 [스칼라의 연산]
스칼라는 우리가 흔히 알고 있는+
,-
,*
,/
의 사칙연산 기호 또는 torch 모듈의 내장된 메서드인add
,sub
,mul
,div
을 이용하여 사칙연산을 수행할 수 있습니다.
💻 코드
import torch
# 텐서 메서드를 이용해 벡터 정의
vector = torch.tensor([1., 2., 3.])
print(vector) # 값 출력
print(vector.shape) # 사이즈 출력
💻 결과
tensor([1., 2., 3.])
torch.Size([3])
※ 여기서 잠깐 ※
💡 [벡터의 연산]
벡터 역시 우리가 흔히 알고 있는+
,-
,*
,/
의 사칙연산 기호 또는 torch 모듈의 내장된 메서드인add
,sub
,mul
,div
을 이용하여 사칙연산을 수행할 수 있습니다. 여기서 주의해야 할 점은 곱셈과 나눗셈의 경우 각 요소별로(element-wise) 연산을 수행하게 됩니다. 스칼라 연산에서 한가지 추가되는 것이 있는 데 바로 내적입니다. 내적은 torch 모듈의 내장된 메서드인dot
을 이용해서 사용하실 수 있습니다.
💻 코드
import torch
# 텐서 메서드를 이용해 행렬 정의
matrix = torch.tensor([[1., 2.],[3., 4.]])
print(matrix) # 값 출력
print(matrix.shape) # 사이즈 출력
💻 결과
tensor([[1., 2.],
[3., 4.]])
torch.Size([2, 2])
※ 여기서 잠깐 ※
💡 [행렬의 연산]
행렬 역시 우리가 흔히 알고 있는+
,-
,*
,/
의 사칙연산 기호 또는 torch 모듈의 내장된 메서드인add
,sub
,mul
,div
을 이용하여 사칙연산을 수행할 수 있습니다. 여기서 주의해야 할 점은 곱셈과 나눗셈의 경우 각 요소별로(element-wise) 연산을 수행하게 됩니다. 스칼라 연산에서 한가지 추가되는 것이 있는 데 바로 행렬 곱 연산입니다. 내적은 torch 모듈의 내장된 메서드인matmul
을 이용해서 사용하실 수 있습니다. matmul은 matrix multiply의 줄임말입니다.
RANK | TYPE | EXAMPLE |
---|---|---|
0 | scalar | [1] |
1 | vector | [1,2] |
2 | matrix | [[1,2],[3,4]] |
3 | 3d-tensor | [[[1,2],[3,4]],[[5,6],[7,8]]] |
n | nd-tensor | [[[1,2],[3,4]],[[5,6],[7,8]], ...] |
Source : https://hadrienj.github.io/posts/Deep-Learning-Book-Series-2.1-Scalars-Vectors-Matrices-and-Tensors/
💻 코드
import torch
# 텐서 메서드를 이용해 tensor 정의
tensor_ = torch.tensor([[[1,2],[3,4]],[[5,6],[7,8]]])
print(tensor_) # 값 출력
print(tensor_.shape) # 사이즈 출력
💻 결과
tensor([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
torch.Size([2, 2, 2])
※ 여기서 잠깐 ※
💡 [텐서의 연산]
텐서의 연산은 행렬의 확장판이기에 동일합니다.