인프런 커뮤니티 질문&답변

Joongkeun Lee님의 프로필 이미지
Joongkeun Lee

작성한 질문수

유니티 머신러닝 에이전트 완전정복 (기초편)

DQN 실습 1

DQN 실행 오류

작성

·

130

0

아래와 같이 에러가 발생하는데 원인을 못찾겠습니다. 도움 좀 부탁드립니다.

github에 있는 DQN.py를 실행하였습니다.

 

10 Episode / Step: 152 / Score: -0.34 / Loss: nan / Epsilon: 1.0000

20 Episode / Step: 332 / Score: -0.57 / Loss: nan / Epsilon: 1.0000

30 Episode / Step: 455 / Score: -0.51 / Loss: nan / Epsilon: 1.0000

40 Episode / Step: 754 / Score: 0.01 / Loss: nan / Epsilon: 1.0000

50 Episode / Step: 1010 / Score: 0.15 / Loss: nan / Epsilon: 1.0000

60 Episode / Step: 1169 / Score: 0.25 / Loss: nan / Epsilon: 1.0000

70 Episode / Step: 1376 / Score: 0.20 / Loss: nan / Epsilon: 1.0000

80 Episode / Step: 1616 / Score: -0.33 / Loss: nan / Epsilon: 1.0000

90 Episode / Step: 1863 / Score: -0.04 / Loss: nan / Epsilon: 1.0000

100 Episode / Step: 2091 / Score: -0.02 / Loss: nan / Epsilon: 1.0000

... Save Model to ./saved_models/GridWorld/DQN/20240821214516/ckpt ...

110 Episode / Step: 2316 / Score: -0.12 / Loss: nan / Epsilon: 1.0000

120 Episode / Step: 2568 / Score: -0.34 / Loss: nan / Epsilon: 1.0000

130 Episode / Step: 2755 / Score: -0.78 / Loss: nan / Epsilon: 1.0000

140 Episode / Step: 2910 / Score: 0.06 / Loss: nan / Epsilon: 1.0000

150 Episode / Step: 3190 / Score: -0.27 / Loss: nan / Epsilon: 1.0000

160 Episode / Step: 3484 / Score: -0.48 / Loss: nan / Epsilon: 1.0000

170 Episode / Step: 3752 / Score: -0.56 / Loss: nan / Epsilon: 1.0000

180 Episode / Step: 3920 / Score: -0.76 / Loss: nan / Epsilon: 1.0000

190 Episode / Step: 4142 / Score: 0.19 / Loss: nan / Epsilon: 1.0000

200 Episode / Step: 4467 / Score: -0.42 / Loss: nan / Epsilon: 1.0000

... Save Model to ./saved_models/GridWorld/DQN/20240821214516/ckpt ...

210 Episode / Step: 4771 / Score: -0.30 / Loss: nan / Epsilon: 1.0000

Traceback (most recent call last):

File "/Users/neweins/Projects/project_unity/ml-agents/build/GridWorld/ref.py", line 224, in <module>

loss = agent.train_model()

File "/Users/neweins/Projects/project_unity/ml-agents/build/GridWorld/ref.py", line 141, in train_model

q = (self.network(state) * one_hot_action).sum(1, keepdims=True)

File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1553, in wrappedcall_impl

return self._call_impl(*args, **kwargs)

File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1562, in callimpl

return forward_call(*args, **kwargs)

File "/Users/neweins/Projects/project_unity/ml-agents/build/GridWorld/ref.py", line 83, in forward

x = F.relu(self.conv1(x))

File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1553, in wrappedcall_impl

return self._call_impl(*args, **kwargs)

File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1562, in callimpl

return forward_call(*args, **kwargs)

File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/conv.py", line 458, in forward

return self._conv_forward(input, self.weight, self.bias)

File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/conv.py", line 454, in convforward

return F.conv2d(input, weight, bias, self.stride,

RuntimeError: Given groups=1, weight of size [32, 6, 8, 8], expected input[32, 168, 3, 64] to have 6 channels, but got 168 channels instead

답변 2

0

안녕하세요, 인프런 AI 인턴입니다. Joongkeun Lee님, 제출하신 DQN 실행 오류 관련하여 도움을 드리기 위해 비슷한 문제를 겪은 다른 학습자의 질문과 그에 대한 답변을 참고한 내용을 아래와 같이 제공합니다.

오류의 원인으로 보입니다. 에러 메시지에 따르면, 입력 데이터의 채널 수가 예상과 달라 문제가 발생한 것으로 보입니다. 구체적으로, 모델이 6개의 입력 채널을 기대했으나 실제로는 168개의 채널을 받았다는 점에서 오류가 발생했습니다. 일반적으로, 이러한 문제는 데이터 전처리 과정에서 입력 데이터의 형태를 올바르게 조정하지 못했을 때 발생할 수 있습니다.

비슷한 문제에 대한 기존의 답변은 다음 링크에서 확인하실 수 있습니다:
- DQN 환경 학습에서는 비슷한 문제를 다루고 있으며, 특히 입력 데이터의 형상과 관련된 문제에 대해 설명하고 있습니다.

위의 답변에서 해결책을 찾을 수는 있는데, 주요 포인트는 입력 데이터의 형태를 모델이 예상하는 형태로 맞춰주는 것입니다. 이 경우, 데이터의 채널 수를 조정해야 할 필요가 있습니다. PyTorch를 사용한다면, torch.viewtorch.reshape와 같은 함수를 사용하여 입력 데이터의 형태를 조정할 수 있습니다.

또한, 콘볼루션 네트워크의 첫 번째 콘볼루션 레이어(conv1)에 대한 입력 차원과 관련해서 문제가 있을 때는, 네트워크 정의 부분에서 입력 데이터의 형태를 올바르게 설정하는 것이 중요합니다. 이와 관련하여 모델 구조를 재검토하고 필요한 경우 수정하는 것을 권장합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

민규식님의 프로필 이미지
민규식
지식공유자

안녕하세요! 학습에 들어가면서 에러가 발생하는 듯 합니다!

오류 내용을 보니 이미지 입력과 네트워크에서 해당 이미지 입력을 처리하는 차원이 달라 발생하는 문제인 듯 합니다!

유니티 환경에서 이미지 입력의 설정과 파이썬 코드상에서 state_size를 어떻게 설정하셨는지 확인해보시면 좋을 것 같습니다!

입력으로 사용되는 이미지 정보를 출력해보셔도 좋을 것 같습니다!

Joongkeun Lee님의 프로필 이미지
Joongkeun Lee
질문자

제공해주시는 github 코드를 받아서 아무 수정 없이 바로 실행해보았는데 해당 에러가 발생합니다.

state_size = [3 * 2, 64, 84] 

 

민규식님의 프로필 이미지
민규식
지식공유자

흠.. 그렇다면 입력 이미지가 잘못 들어오는 것 같네요! 유니티 상에서 확인해봐야할 것 같은데 혹시 ML-Agents 버전은 어떤 버전을 사용하셨을까요?

Joongkeun Lee님의 프로필 이미지
Joongkeun Lee
질문자

유니티가 문제라면 제가 만든 app말고 github의 gridworld.app으로 해보고 싶은데 실행에러가 납니다.
별도로 다시 제공이 가능하실까요?
(맥 환경에서 진행하고 있습니다.)

 

설치 버전은 아래와 같습니다. 

스크린샷 2024-08-22 오후 7.43.43.png

 

민규식님의 프로필 이미지
민규식
지식공유자

전에도 아래 링크와 같이 올려주신 것과 비슷한 오류가 있으셨던 분이 있었는데 해결이 잘 안되긴 했습니다! ㅜㅜㅜㅜ
https://www.inflearn.com/community/questions/1298425/dqn-%ED%99%98%EA%B2%BD-%ED%95%99%EC%8A%B5

 

이 문제와 동일하다면 설정은 잘 되었는데 문제가 발생하는 이상한 상황이었습니다!

이분도 ML Agents 버전이 3.0이었고 Unity 6 Preview를 사용했던 것으로 확인했습니다.

보통 이런 경우는 유니티 자체나 ML-Agents 자체의 문제인 경우가 많아서 버전을 강의 버전과 유사하게 변경해보시는 것을 추천드립니다!

Joongkeun Lee님의 프로필 이미지
Joongkeun Lee
질문자

유니티가 문제라면 제가 만든 app말고 github의 gridworld.app으로 해보고 싶은데 실행에러가 납니다.
별도로 다시 제공이 가능하실까요?
(맥 환경에서 진행하고 있습니다.)

민규식님의 프로필 이미지
민규식
지식공유자

어떤 에러가 나실까요? 지금 깃허브의 빌드된 환경과 파이썬 코드로 돌리시는데 에러가 나시는걸까요?

Joongkeun Lee님의 프로필 이미지
Joongkeun Lee

작성한 질문수

질문하기