Data is ___ ?
article thumbnail
Published 2023. 1. 28. 14:34
[Pytorch] GPU device Programming/Pytorch

만약 데이터가 GPU를 사용해서 학습을 해야하는 상황이라면 코드 내에서 해당하는 데이터들을 GPU용 텐서로 변환해 주어야 한다. 먼저 device를 정의해주기 !

<python />
import torch device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

 

 


1. CNN

추가추가

 

 


 

 

 

 

 

 

 

2. RNN

2.1. 데이터 처리

  • 시퀀스 데이터를 만드는 함수 내에서 x_seq, y_seq를 변환 후 return
  • y데이터는 view를 사용하여 2차원으로 바꿔준다. 왜냐하면 MSE Loss가 기본적으로 2차원 target data를 받기 때문 !
<python />
return torch.FloatTensor(x_seq).to(device), torch.FloatTensor(y_seq).to(device).view(-1, 1)

 

 

 

 

 

2.2. 모델 만들기

  • 모델을 만들 때 forward 함수에서 h0값을 device 처리해 준다. 
<python />
h0 = torch.zeros(self.num_layers, x.size()[0], self.hidden_size).to(device)

 

 

 

 

2.3. 모델 선언

  • 모델 선언을 할 때 device 처리해 준다.
<python />
model = RNN(input_size=input_size, hidden_size=hidden_size, sequence_length=sequence_length, num_layers=num_layers, device=device).to(device)

 

 

 

 

 

2.4. 모델 학습

<python />
for epoch in range(50) : ... for data in trainloader : ... inputs, labels = data[0].to(device).squeeze(1), data[1].to(device) ... # 학습 도중 정확도를 구할 때에는 변수 업데이트가 필요 없으므로 detach()를 사용해서 outputs의 requires_grad를 비활성화 _, predicted = torch.max(outputs.detach(), 1)

 

 

 

 

 

 

2.5. 모델 평가

  • 모델 평가할 때 특히나 주의 !
<python />
with torch.no_grad() : pred = [] model.eval() for data in dataloader : seq, target = data out = model(seq) pred += out.cpu().tolist() ...
<python />
with torch.no_grad() : model.eval() for data in dataloader : inputs, labels = data[0].to(device).squeeze(1), data[1].to(device) outputs = model(inputs) ...

 

 

 

 

 

 

'Programming > Pytorch' 카테고리의 다른 글

[Pytorch] torch.max( ) & torch.argmax( )  (0) 2023.01.30
[Pytorch] Dataset, DataLoader  (0) 2023.01.27
[Pytorch] nn.Linear( ), MLP  (0) 2023.01.20
[Pytorch] 텐서(차원) 관련 함수 정리  (0) 2023.01.18
[Pytorch] 모듈 및 함수 정리  (0) 2023.01.15
profile

Data is ___ ?

@콩순이컴퓨터

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!