Quiz-2 (2026.03.10) // 범위: ~01wk

Author

최규빈

Published

March 10, 2026

Warning주의사항

죄송합니다. 해설영상 중 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] (가능하지만 추천하지 않음)