문제 상황
ntire 가상환경에서 test.py를 구동하려는 시도중이었다.
python test.py ./configs/test/test_ntire.json ./wgts/full-ntire/DUAL_8.ckpt
이렇게 테스트를 시도해보자.
학습된 weight 파일의 경로는 다음과 같다.
그런데 다음과 같은 에러가 발생했다.
RuntimeError: Error(s) in loading state_dict for DataParallel:
Missing key(s) in state_dict: "module.trans.in_block.0.weight".....
해결을 위한 시도
DataParallel이란 내용은 GPU를 두 개 이상 이용할 경우에 사용하는 것이기 때문에, 하나만 사용하는 경우
DataParallel이라는 코드 부분을 지워주면 된다.
나의 경우,
위와 같이 nn.DataParallel이라는 부분을 test.py 코드에서 지워주었더니 정상 동작하였다.
👇 여기서부터는 해결을 위해 삽질한 부분 👇
(필요하신 분들만 참고하세요. 아래 내용으로는 해결이 되지 않았습니다.)
파일을 불러올 때, 원하는 부분이 없는 파일이었기 때문에, 이런 에러가 발생한 것이라고 생각하여, 경로명을 다르게 설정해보기로 했다.
경로 상에 보니까 json file 이 같이 저장되는 것으로 보아, 해당 json 파일로 경로를 변경해주었을 때, 어떤 결과를 내는 지 확인해보기로 했다.
python test.py ./wgts/full-ntire/DUAL_8.json ./wgts/full-ntire/DUAL_8.ckpt
그랬더니 다음과 같은 에러가 발생했다.
File "test.py", line 21, in <module>
if not os.path.isdir(opt['results_path']):
KeyError: 'results_path'
기존 코드에서는 다음과 같은 에러는 없었기 때문에, 기존 json 파일의 양식과 다른 점이 있는지를 파악해보았다.
매우 다르다는 것을 확인했고, 처음에 작성했던 코드가 더 맞다는 것을 알았다.
is_train 이 1로 설정되어야 한다는 생각이 들었다.
하지만 파라미터를 1로 바꾸어도 같은 결과가 발생하였다.
아무래도 트레이닝이 다 되지 않은 상황에서 중단한 중간값을 결과로 받아들이려고 해서 이런 문제가 생기는 것 같아,
다시 파라미터를 학습해서 시도해보기로 했다.
그래서 다시 학습을 해서 파라미터를 입력했는데 같은 에러가 발생했다.
그래서 학습상의 문제는 아니라고 판단하고, 문제를 찾아보기 시작하였다.
nn.Parallel을 이용해서 학습한 모델이기 때문에 똑같이 test에도 Parallel을 이용해서 test를 했는데,
왜 이런 에러가 났는지 모르겠어서
사이트를 찾아보았는데, pytorch를 다운그레이드하면 구동이 된다는 사례가 있어서,
conda install pytorch==0.4.1 cuda100 -c pytorch
를 입력해주었다.
그래서 이렇게 하고 다시 학습을 해주었다.
왜냐면 버전이 달라서, 학습 방법이 다르다는 의견이 있기 때문이다.
기존에 학습된 것들을 지우고 재학습 해보겠다.
참고한 사이트
github.com/DeepBaksuVision/You_Only_Look_Once/issues/63
'COMPUTER SCIENCE > ERRORS' 카테고리의 다른 글
NameError: name 'h5py' is not defined 에러 해결 (0) | 2020.12.22 |
---|---|
GPU 변경 이후 트레이닝이 안되는 문제 해결 (0) | 2020.11.18 |
ModuleNotFoundError: No module named 'skimage' 에러 해결 방법 (1) | 2020.11.11 |
FileNotFoundError: [Errno 2] No such file or directory 에러 해결 (0) | 2020.11.04 |
ModuleNotFoundError: No module named 'IPython' 에러 해결 (0) | 2020.11.04 |