Quiz-2 (2026.03.10) // 범위: ~01wk
죄송합니다. 해설영상 중 2번 “행렬 곱셉 가능 여부 판단 문제” 해설 부분에서 실수가 있었습니다. 녹화 당시 집중력이 떨어져서 2~3개 정도 틀린 답을 말한 것 같습니다. 해설영상과 답안이 다를 경우, 답안이 맞는것이니 참고해주세요.
1. 토치 텐서와 행렬 표현 매칭
다음 행렬 표현에 대응하는 올바른 torch.tensor 선언 방법을 고르시오.
(1) \(\begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}\) (3×1 행렬)
① torch.tensor([1, 2, 3])
② torch.tensor([[1], [2], [3]])
③ torch.tensor([[1, 2, 3]])
④ torch.tensor([[[1]], [[2]], [[3]]])
②
(2) \(\begin{bmatrix} 1 & 2 & 3 \end{bmatrix}\) (1×3 행렬)
① torch.tensor([1, 2, 3])
② torch.tensor([[1], [2], [3]])
③ torch.tensor([[1, 2, 3]])
④ torch.tensor([[[1, 2, 3]]])
③
(3) \(\begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix}\) (3×2 행렬)
① torch.tensor([[1, 2], [3, 4], [5, 6]])
② torch.tensor([[1, 3, 5], [2, 4, 6]])
③ torch.tensor([1, 2, 3, 4, 5, 6])
④ torch.tensor([[1, 2, 3], [4, 5, 6]])
①
(4) \(\begin{bmatrix} 5 \\ 10 \\ 15 \\ 20 \end{bmatrix}\) (4×1 행렬)
① torch.tensor([5, 10, 15, 20])
② torch.tensor([[5, 10, 15, 20]])
③ torch.tensor([[5], [10], [15], [20]])
④ torch.tensor([[[5, 10, 15, 20]]])
③
(5) \(\begin{bmatrix} 1 & 2 & 3 & 4 & 5 \end{bmatrix}\) (1×5 행렬)
① torch.tensor([1, 2, 3, 4, 5])
② torch.tensor([[1, 2, 3, 4, 5]])
③ torch.tensor([[1], [2], [3], [4], [5]])
④ torch.tensor([[[1, 2, 3, 4, 5]]])
②
(6) \(\begin{bmatrix} 2 \\ 4 \end{bmatrix}\) (2×1 행렬)
① torch.tensor([2, 4])
② torch.tensor([[2, 4]])
③ torch.tensor([[2], [4]])
④ torch.tensor([[[2]], [[4]]])
③
(7) \(\begin{bmatrix} 7 & 8 \end{bmatrix}\) (1×2 행렬)
① torch.tensor([7, 8])
② torch.tensor([[7, 8]])
③ torch.tensor([[7], [8]])
④ torch.tensor([7], [8])
②
(8) 다음 코드로 생성된 텐서의 shape는?
a = torch.tensor([[1, 2, 3]])① torch.Size([3])
② torch.Size([1, 3])
③ torch.Size([3, 1])
④ torch.Size([1, 1, 3])
②
(9) 다음 코드로 생성된 텐서의 shape는?
b = torch.tensor([[1], [2], [3]])① torch.Size([3])
② torch.Size([1, 3])
③ torch.Size([3, 1])
④ torch.Size([1, 1, 3])
③
(10) 다음 코드로 생성된 텐서의 shape는?
c = torch.tensor([1, 2, 3, 4])① torch.Size([4])
② torch.Size([1, 4])
③ torch.Size([4, 1])
④ torch.Size([1, 1, 4])
①
(11) 다음 코드로 생성된 텐서의 shape는?
d = torch.tensor([[1, 2], [3, 4], [5, 6]])① torch.Size([3, 2])
② torch.Size([2, 3])
③ torch.Size([6])
④ torch.Size([1, 3, 2])
①
(12) 다음 코드로 생성된 텐서의 shape는?
e = torch.tensor([[[1, 2, 3]]])① torch.Size([3])
② torch.Size([1, 3])
③ torch.Size([3, 1])
④ torch.Size([1, 1, 3])
④
2. 행렬 곱셉 가능 여부 판단
다음 각 경우에 대해 행렬 곱셈(@)이 가능하면 “O”와 결과의 shape를, 불가능하면 “X”를 쓰시오.
답안예시:
torch.tensor([[1, 2]]) @ torch.tensor([[3], [4]])–> O, shape: 1,1
(1)
torch.tensor([[1, 2, 3]]) @ torch.tensor([[4, 5, 6]])X (불가능) - 1×3 행렬과 1×3 행렬, 앞 행렬의 열(3) ≠ 뒤 행렬의 행(1)
(2)
torch.tensor([[1, 2]]) @ torch.tensor([[3], [4]])O, shape: (1, 1)
(3)
torch.tensor([[1], [2]]) @ torch.tensor([[3, 4]])O, shape: (2, 2)
(4)
torch.tensor([[1, 2, 3, 4]]) @ torch.tensor([[5], [6], [7], [8]])O, shape: (1, 1)
(5)
torch.tensor([[1, 2], [3, 4]]) @ torch.tensor([[5, 6, 7], [8, 9, 10]])O, shape: (2, 3)
(6)
torch.tensor([[1, 2, 3]]) @ torch.tensor([[4], [5]])X (불가능) - 1×3 행렬과 2×1 행렬, 앞 행렬의 열(3) ≠ 뒤 행렬의 행(2)
(7)
torch.tensor([[1], [2], [3]]) @ torch.tensor([[4, 5]])O, shape: (3, 2)
(8)
torch.tensor([[1, 2], [3, 4], [5, 6]]) @ torch.tensor([[7, 8], [9, 10]])O, shape: (3, 2)
(9)
torch.tensor([[1, 2, 3, 4, 5]]) @ torch.tensor([[6], [7], [8], [9], [10]])O, shape: (1, 1)
(10)
torch.tensor([[1], [2]]) @ torch.tensor([[3, 4], [5, 6]])X (불가능) - 2×1 행렬과 2×2 행렬, 앞 행렬의 열(1) ≠ 뒤 행렬의 행(2)
3. 역행렬 계산
torch를 사용하여 다음 행렬의 역행렬을 구하시오.
(1) \[A = \begin{bmatrix} 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \end{bmatrix}\]
import torch
A = torch.tensor([[2., 1., 1.],
[1., 2., 1.],
[1., 1., 2.]])
A_inv = torch.linalg.inv(A)
print(A_inv)
# 결과:
# tensor([[ 0.7500, -0.2500, -0.2500],
# [-0.2500, 0.7500, -0.2500],
# [-0.2500, -0.2500, 0.7500]])(2) \[B = \begin{bmatrix} 4 & 3 & 2 \\ 7 & 5 & 1 \\ 3 & 2 & 4 \end{bmatrix}\]
import torch
B = torch.tensor([[4., 3., 2.],
[7., 5., 1.],
[3., 2., 4.]])
B_inv = torch.linalg.inv(B)
print(B_inv)
# 결과:
# tensor([[ 3.0000, -1.6000, -1.4000],
# [-5.0000, 2.0000, 2.0000],
# [-0.2000, 0.2000, -0.2000]])4. 행렬 슬라이싱 - 마지막 2개 열 추출
다음 5×5 행렬이 주어졌을 때:
a = torch.tensor([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]])마지막 2개의 열(4열과 5열, 즉 인덱스 3, 4에 해당하는 열)을 추출하는 코드를 2가지 이상의 서로 다른 방법으로 작성하시오.
방법 1: a[:, 3:5]
방법 2: a[:, -2:]
방법 3: a[:, [3, 4]]
방법 4: a[:, [-2, -1]]
방법 5: a[:, [3, -1]] (가능하지만 추천하지 않음)
방법 6: a[:, -2:5] (가능하지만 추천하지 않음)