티스토리 뷰

 

RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

와 같은 오류가 계속뜬다..

pix2pix 예제를 해보고 있는데 위와 같은 오류가 계속뜬다..

분명 같은 공간?(cpu or gpu)에 올라가 있지 않아서 그런거 같은데.. 

분명 모델, 데이터는 to(device)로 같은 공간에 할당되어 있다..

그럼 왜 안될까...???

 

한참을 살펴보다 보니 전체 모델을 to(device) 한다고 해서 반드시 device로 할당되는건 아닌것 같았다. 

이런식으로 모델과, 모든 데이터를 같은 공간에 할당시켜줬지만 해결이 안됐다. 그래서 하나씩 디버깅을 해보기 시작했다.

 

문제는 모델 내부에 있었다.

 

unet을 만들어 사용하다보니, down/ upBlock을 만들어놓고 사용했는데 여기 forward부분에

nn.Sequential이 문제였다. 

이처럼, 모델 내부 함수 블럭안에 layer을 넣게되면 .. 저 곳에도 to(device)을 하나씩 해줘야  한다...

이렇게..! 

이처럼 Sequential layer도 device에 할당해주니 문제를 해결할 수 있었다.

 

만약, 함수로 블럭을 만들어 모델을 구성하였는데, 할당위치의 문제가 생긴다면.. 한번 참고해보길 바란다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
26 27 28 29 30 31
글 보관함