1. squeeze() 함수는 모든 차원에서 크기가 1인 축을 제거한다. (O)
  2. 아래 코드에서 y 텐서의 크기는 (1, 3, 4)다. (O)
x = torch.rand(3, 4)
y = x.unsqueeze(0)
  1. 아래 코드에서 y 텐서의 크기는 (6,)다. (O)
import torch

x = torch.rand(2, 3)
y = x.view(-1)
  1. NLP의 경우 최소 4차원 이상의 텐서를 사용해야 한다. (X) : 3차원 이상의 텐서로 처리가 가능하다

  2. 두 개의 텐서를 수직으로 쌓아 새로운 텐서를 만들 때, torch.concat ****을 쓰면 된다. (O) : torch.cat과 같은 역할을 수행함

  3. 넘파이에서는 GPU에서 텐서 조작 및 동적 신경망 구축이 가능하다. (X) : SIMD라는 병렬 프로세서를 사용하는데, CPU에서 작동함.

  4. 넘파이와 다르게 파이토치에서는 자동 미분 패키지가 있는 장점이 있다. (O) : 넘파이는 코드를 작성해야하지만, 파이토치에서는 가능함.(Autograd 모듈)

  5. 다음의 실행 결과는 옳다. (이유도 설명하시오)

    import torch
    m1 = torch.FloatTensor([[1, 2]])
    m2 = torch.FloatTensor([[3], [4]])
    print(m1 + m2)
    

    출력 : tensor([[4., 5.], [5., 6.]])

    [이유] 파이토치에서는 크기가 다른 행렬이어도, 브로드캐스팅이 가능하기 때문에

  6. 실행 결과가 옳은지 판단하시오. (X)

    t = np.array([[[0, 1, 2],[3, 4, 5]], [[6, 7, 8],[9, 10, 11]]])
    ft = torch.FloatTensor(t)
    print(ft.shape)
    

    출력 : torch.Size([3, 2, 2])

    [이유] ft.shape = (2, 2, 3)

  7. In-place operation 중 c을 쓰면 해당 텐서의 메모리 공간을 직접 조작하므로 텐서의 값이 직접 변경된다.