Data is ___ ?
article thumbnail
Published 2023. 1. 28. 14:34
[Pytorch] GPU device Python/라이브러리

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

import torch
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

 

 


CNN

추가추가

 

 


 

 

 

 

 

 

 

RNN

데이터 처리

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

 

 

 

 

 

모델 만들기

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

 

 

 

 

모델 선언

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

 

 

 

 

 

모델 학습

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)

 

 

 

 

 

 

모델 평가

  • 모델 평가할 때 특히나 주의 !
with torch.no_grad() :
	pred = []
    model.eval()
    for data in dataloader :
    	seq, target = data
        out = model(seq)
        pred += out.cpu().tolist()
        ...
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)
        ...

 

 

 

 

 

 

'Python > 라이브러리' 카테고리의 다른 글

[Pytorch] torch.max( ) & torch.argmax( )  (0) 2023.01.30
[Pytorch] Dataset, DataLoader  (0) 2023.01.27
[Python] 파이썬 파일 관련 코드들  (0) 2023.01.20
[Matplotlib] 정리  (0) 2023.01.20
[Pytorch] nn.Linear( ), MLP  (0) 2023.01.20
profile

Data is ___ ?

@콩순이컴퓨터

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

profile on loading

Loading...