• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

model 선언할떄 .to(device) 하는 이유가 궁금해요

22.11.15 01:47 작성 조회수 3.72k

1

model = VanillaRNN(input ~~~, device = device).to(device) 에서

괄호 안에 디바이스를 gpu로 선언해줬는데

밖에 to(device)를 하는 이유가 궁금해요

 

그리고 out.shape[0]은 출력값인거 알겠는데

원래 out은 형태가 어떻게 생겼는지 궁금해요

답변 1

답변을 작성해보세요.

0

안녕하세요.

텐서 연산 시에 모든 텐서가 동일한 operation(전부 cpu나 전부 gpu)을 사용해야 합니다.

따라서 밖에 .to(device)는 모델 파라메터에 대해 gpu을 사용할 수 있도록 하는 것이고 내부에 넣은 .to(device)는 모델 파라메터가 아닌 h0를 gpu용 텐서를 만드려는 용도입니다.

(h0은 모델 파라메터가 아니므로 밖에 .to(device)에 영향을 받지 않습니다.)

h0 = torch.zeros(self.num_layers, x.size()[0], self.hidden_size).to(self.device)

그리고 out의 형태가 궁금하시면 바로 윗줄에 print(out.shape)를 넣어서 확인하시면 되요!

 

감사합니다.