[νμ΄ν μΉ] νμ΄ν μΉ κΈ°μ΄ μμ (ν μνΈ)
μλ³Έ κ²μκΈ: https://velog.io/@euisuk-chung/νμ΄ν μΉ-κΈ°μ΄-μμ-ν μνΈ
μ€λμ νμ΄ν μΉλ₯Ό λ€λ£¨κΈ° μν΄ μ€μν κΈ°μ΄ μ§μλ€ μ€ ν
μ
μ λν΄ λ€λ£¨μ΄λ³Ό μμ μ
λλ€.
Source : https://hadrienj.github.io/posts/Deep-Learning-Book-Series-2.1-Scalars-Vectors-Matrices-and-Tensors/
ν μ
- ν μλ βλ°μ΄ν°λ₯Ό νννλ λ¨μβμ λλ€.
- ν¬κ²
scalar
,vector
,matrix
,tensor
λ‘ λΆλ₯ν μ μμ΅λλ€.
Scalar
- μ€μΉΌλΌ(scalar)λ μ°λ¦¬κ° νν μνμμ λΆλ₯΄λ μμ κ°μ΄λΌκ³ 보면 λ©λλ€.
- Pytorch λͺ¨λμμ μ΄λ₯Ό νμ©ν΄μ£ΌκΈ° μν΄μλ μλμ κ°μ΄ import torch ν torch λͺ¨λμ λ΄μ₯λμ΄ μλ tensor λ©μλλ₯Ό μ΄μ©ν΄ λ€μκ³Ό κ°μ΄ μ€μΉΌλΌ κ°μ μ μν΄μ€ μ μμ΅λλ€.
π» μ½λ
1
2
3
4
5
6
import torch
# ν
μ λ©μλλ₯Ό μ΄μ©ν΄ μ€μΉΌλΌ κ° μ μ
scalar = torch.tensor([2.])
print(scalar) # κ° μΆλ ₯
print(scalar.shape) # μ¬μ΄μ¦ μΆλ ₯
π» κ²°κ³Ό
1
2
tensor([2.])
torch.Size([1])
β» μ¬κΈ°μ μ κΉ β»
π‘ [μ€μΉΌλΌμ μ°μ°]
μ€μΉΌλΌλ μ°λ¦¬κ° νν μκ³ μλ
+
,-
,*
,/
μ μ¬μΉμ°μ° κΈ°νΈ λλ torch λͺ¨λμ λ΄μ₯λ λ©μλμΈadd
,sub
,mul
,div
μ μ΄μ©νμ¬ μ¬μΉμ°μ°μ μνν μ μμ΅λλ€.
Vector
- 벑ν°(vector)λ μν κ°λ μΌλ‘ ν¬κΈ°μ λ°©ν₯μ κ°λ 물리λμ μλ―Έν©λλ€.
- μΌλ°μ μΌλ‘ 벑ν°λ μμμ κ³Ό λμ μ μ°κ²°νλ νμ΄νλ‘ νμν μ μλλ°, μμμ μ (0,)μ΄λΌκ³ νλ©΄ 벑ν°λ nμ°¨μ κ³΅κ° μμ μ’νλΌκ³ μκ°ν μλ μμ΅λλ€.
- Pytorch λͺ¨λμμ μ΄λ₯Ό νμ©ν΄μ£ΌκΈ° μν΄μλ μλμ κ°μ΄ import torch ν torch λͺ¨λμ λ΄μ₯λμ΄ μλ tensor λ©μλλ₯Ό μ΄μ©ν΄ λ€μκ³Ό κ°μ΄ 벑ν°λ₯Ό μ μν΄μ€ μ μμ΅λλ€.
π» μ½λ
1
2
3
4
5
6
import torch
# ν
μ λ©μλλ₯Ό μ΄μ©ν΄ λ²‘ν° μ μ
vector = torch.tensor([1., 2., 3.])
print(vector) # κ° μΆλ ₯
print(vector.shape) # μ¬μ΄μ¦ μΆλ ₯
π» κ²°κ³Ό
1
2
tensor([1., 2., 3.])
torch.Size([3])
β» μ¬κΈ°μ μ κΉ β»
π‘ [벑ν°μ μ°μ°]
λ²‘ν° μμ μ°λ¦¬κ° νν μκ³ μλ
+
,-
,*
,/
μ μ¬μΉμ°μ° κΈ°νΈ λλ torch λͺ¨λμ λ΄μ₯λ λ©μλμΈadd
,sub
,mul
,div
μ μ΄μ©νμ¬ μ¬μΉμ°μ°μ μνν μ μμ΅λλ€. μ¬κΈ°μ μ£Όμν΄μΌ ν μ μ κ³±μ κ³Ό λλμ μ κ²½μ° κ° μμλ³λ‘(element-wise) μ°μ°μ μννκ² λ©λλ€. μ€μΉΌλΌ μ°μ°μμ νκ°μ§ μΆκ°λλ κ²μ΄ μλ λ° λ°λ‘ λ΄μ μ λλ€. λ΄μ μ torch λͺ¨λμ λ΄μ₯λ λ©μλμΈdot
μ μ΄μ©ν΄μ μ¬μ©νμ€ μ μμ΅λλ€.
Matrix
- νλ ¬(matrix)μ΄λ μ€μ λλ 볡μμλ₯Ό μ κ·Έλ¦Όμ μ’λ³κ³Ό κ°μ΄ μ§μ¬κ°νμΌλ‘ λ°°μ΄ν κ²μ λ§ν©λλ€. μ¦, μ΄ λ§μ 2κ° μ΄μμ 벑ν°λ₯Ό ν©μ³μ ꡬμ±ν κ²μ΄ κ³§ νλ ¬μ΄ λκ² λ©λλ€.
- νλ ¬μ λ²‘ν° κ° μ°μ°μ λΉ λ₯΄κ² μ§νν μ μλ μ ν λμμ κΈ°λ³Έ λ¨μμ λλ€.
- Pytorch λͺ¨λμμ μ΄λ₯Ό νμ©ν΄μ£ΌκΈ° μν΄μλ μλμ κ°μ΄ import torch ν torch λͺ¨λμ λ΄μ₯λμ΄ μλ tensor λ©μλλ₯Ό μ΄μ©ν΄ λ€μκ³Ό κ°μ΄ νλ ¬μ μ μν΄μ€ μ μμ΅λλ€.
π» μ½λ
1
2
3
4
5
6
import torch
# ν
μ λ©μλλ₯Ό μ΄μ©ν΄ νλ ¬ μ μ
matrix = torch.tensor([[1., 2.],[3., 4.]])
print(matrix) # κ° μΆλ ₯
print(matrix.shape) # μ¬μ΄μ¦ μΆλ ₯
π» κ²°κ³Ό
1
2
3
tensor([[1., 2.],
[3., 4.]])
torch.Size([2, 2])
β» μ¬κΈ°μ μ κΉ β»
π‘ [νλ ¬μ μ°μ°]
νλ ¬ μμ μ°λ¦¬κ° νν μκ³ μλ
+
,-
,*
,/
μ μ¬μΉμ°μ° κΈ°νΈ λλ torch λͺ¨λμ λ΄μ₯λ λ©μλμΈadd
,sub
,mul
,div
μ μ΄μ©νμ¬ μ¬μΉμ°μ°μ μνν μ μμ΅λλ€. μ¬κΈ°μ μ£Όμν΄μΌ ν μ μ κ³±μ κ³Ό λλμ μ κ²½μ° κ° μμλ³λ‘(element-wise) μ°μ°μ μννκ² λ©λλ€. μ€μΉΌλΌ μ°μ°μμ νκ°μ§ μΆκ°λλ κ²μ΄ μλ λ° λ°λ‘ νλ ¬ κ³± μ°μ°μ λλ€. λ΄μ μ torch λͺ¨λμ λ΄μ₯λ λ©μλμΈmatmul
μ μ΄μ©ν΄μ μ¬μ©νμ€ μ μμ΅λλ€. matmulμ matrix multiplyμ μ€μλ§μ λλ€.
Tensor
- ν μ(tensor)λ λ§€μ° μνμ μΈ κ°λ μΌλ‘ λ°μ΄ν°μ λ°°μ΄μ΄λΌκ³ λ³Ό μ μμ΅λλ€.
- ν μλ μλ°ν λ§νλ©΄ μμμ μκ°ν scalar, vector, matrix λͺ¨λλ₯Ό μμ°λ₯΄λ κ°λ μ΄λ©° μλμ νμ κ°μ΄ μ 리λ μ μμ΅λλ€. (μ μ¬νκΉμ§ scalar, vector, matrixλ₯Ό μ μΈνλ λ° torch.tensorλ₯Ό μ»λμ§ μμκ² μ£ ?γ γ )
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/
- Pytorch λͺ¨λμμ μ΄λ₯Ό νμ©ν΄μ£ΌκΈ° μν΄μλ μλμ κ°μ΄ import torch ν torch λͺ¨λμ λ΄μ₯λμ΄ μλ tensor λ©μλλ₯Ό μ΄μ©ν΄ λ€μκ³Ό κ°μ΄ ν μλ₯Ό μ μν΄μ€ μ μμ΅λλ€.
π» μ½λ
1
2
3
4
5
6
import torch
# ν
μ λ©μλλ₯Ό μ΄μ©ν΄ tensor μ μ
tensor_ = torch.tensor([[[1,2],[3,4]],[[5,6],[7,8]]])
print(tensor_) # κ° μΆλ ₯
print(tensor_.shape) # μ¬μ΄μ¦ μΆλ ₯
π» κ²°κ³Ό
1
2
3
4
5
6
tensor([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
torch.Size([2, 2, 2])
β» μ¬κΈ°μ μ κΉ β»
π‘ [ν μμ μ°μ°]
ν μμ μ°μ°μ νλ ¬μ νμ₯νμ΄κΈ°μ λμΌν©λλ€.