• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

DQN 코드 에러

22.12.06 19:35 작성 22.12.06 19:38 수정 조회수 285

0

ValueError: cannot reshape array of size 2 into shape (1,4)


DQN 코드에서 다음과 같은 에러가 납니다.

state_t = np.reshape(state,[1, 1, self.state_size])

여기서 문제가 생기는 거 같은데.. 코드 확인 부탁합니다.

 

DQN 뿐만 아니라 REINFORCE, A2C 모두 같은 에러가 납니다.

 

답변 1

답변을 작성해보세요.

0

안녕하세요 ljp4122님.

강의에서 설명한 것과 동일하게 코드를 작성하고 실행했을 때 오류가 발생했다면 환경 문제인 것 같습니다.

파이썬은 다른 프로그램들과 달리 버전에 굉장히 민감하기 때문에 기존에 사용하시던 환경을 잠시 제거하시고 강의를 수강 하시는 동안은 다음 버전의 프로그램을 설치해주시면 감사하겠습니다.

동일한 버전의 SW를 설치했는데도 계속 문제가 발생하시면 다시 문의 글 남겨주세요. 감사합니다.

python 3.7.7

tensorfow 2.2

numpy 1.19.3

감사합니다.

ljp4122님의 프로필

ljp4122

질문자

2022.12.07

# packages in environment at C:\Anaconda3_64\envs\rlcode5:

# Name Version Build Channel

absl-py 1.3.0 pypi_0 pypi

anyio 3.6.2 pypi_0 pypi

argon2-cffi 21.3.0 pypi_0 pypi

argon2-cffi-bindings 21.2.0 pypi_0 pypi

astunparse 1.6.3 pypi_0 pypi

attrs 22.1.0 pypi_0 pypi

backcall 0.2.0 pypi_0 pypi

beautifulsoup4 4.11.1 pypi_0 pypi

bleach 5.0.1 pypi_0 pypi

ca-certificates 2022.10.11 haa95532_0

cachetools 4.2.4 pypi_0 pypi

certifi 2022.9.24 py37haa95532_0

cffi 1.15.1 pypi_0 pypi

charset-normalizer 2.1.1 pypi_0 pypi

cloudpickle 2.2.0 pypi_0 pypi

colorama 0.4.6 pypi_0 pypi

cycler 0.11.0 pypi_0 pypi

debugpy 1.6.4 pypi_0 pypi

decorator 5.1.1 pypi_0 pypi

defusedxml 0.7.1 pypi_0 pypi

entrypoints 0.4 pypi_0 pypi

fastjsonschema 2.16.2 pypi_0 pypi

fonttools 4.38.0 pypi_0 pypi

gast 0.3.3 pypi_0 pypi

google-auth 1.35.0 pypi_0 pypi

google-auth-oauthlib 0.4.6 pypi_0 pypi

google-pasta 0.2.0 pypi_0 pypi

grpcio 1.51.1 pypi_0 pypi

gym 0.26.2 pypi_0 pypi

gym-notices 0.0.8 pypi_0 pypi

h5py 2.10.0 pypi_0 pypi

idna 3.4 pypi_0 pypi

importlib-metadata 5.1.0 pypi_0 pypi

importlib-resources 5.10.0 pypi_0 pypi

ipykernel 6.16.2 pypi_0 pypi

ipython 7.34.0 pypi_0 pypi

ipython-genutils 0.2.0 pypi_0 pypi

jedi 0.18.2 pypi_0 pypi

jinja2 3.1.2 pypi_0 pypi

jsonschema 4.17.3 pypi_0 pypi

jupyter-client 7.4.8 pypi_0 pypi

jupyter-core 4.12.0 pypi_0 pypi

jupyter-server 1.23.3 pypi_0 pypi

jupyterlab-pygments 0.2.2 pypi_0 pypi

keras-preprocessing 1.1.2 pypi_0 pypi

kiwisolver 1.4.4 pypi_0 pypi

markdown 3.4.1 pypi_0 pypi

markupsafe 2.1.1 pypi_0 pypi

matplotlib 3.5.3 pypi_0 pypi

matplotlib-inline 0.1.6 pypi_0 pypi

mistune 2.0.4 pypi_0 pypi

nbclassic 0.4.8 pypi_0 pypi

nbclient 0.7.2 pypi_0 pypi

nbconvert 7.2.6 pypi_0 pypi

nbformat 5.7.0 pypi_0 pypi

nest-asyncio 1.5.6 pypi_0 pypi

notebook 6.5.2 pypi_0 pypi

notebook-shim 0.2.2 pypi_0 pypi

numpy 1.19.3 pypi_0 pypi

oauthlib 3.2.2 pypi_0 pypi

openssl 1.1.1s h2bbff1b_0

opt-einsum 3.3.0 pypi_0 pypi

packaging 21.3 pypi_0 pypi

pandocfilters 1.5.0 pypi_0 pypi

parso 0.8.3 pypi_0 pypi

pickleshare 0.7.5 pypi_0 pypi

pillow 9.3.0 pypi_0 pypi

pip 22.3.1 pypi_0 pypi

pkgutil-resolve-name 1.3.10 pypi_0 pypi

prometheus-client 0.15.0 pypi_0 pypi

prompt-toolkit 3.0.33 pypi_0 pypi

protobuf 3.20.3 pypi_0 pypi

psutil 5.9.4 pypi_0 pypi

pyasn1 0.4.8 pypi_0 pypi

pyasn1-modules 0.2.8 pypi_0 pypi

pycparser 2.21 pypi_0 pypi

pygments 2.13.0 pypi_0 pypi

pyparsing 3.0.9 pypi_0 pypi

pyrsistent 0.19.2 pypi_0 pypi

python 3.7.7 h81c818b_4

python-dateutil 2.8.2 pypi_0 pypi

pywin32 305 pypi_0 pypi

pywinpty 2.0.9 pypi_0 pypi

pyzmq 24.0.1 pypi_0 pypi

requests 2.28.1 pypi_0 pypi

requests-oauthlib 1.3.1 pypi_0 pypi

rsa 4.9 pypi_0 pypi

scipy 1.4.1 pypi_0 pypi

send2trash 1.8.0 pypi_0 pypi

setuptools 65.5.0 py37haa95532_0

six 1.16.0 pypi_0 pypi

sniffio 1.3.0 pypi_0 pypi

soupsieve 2.3.2.post1 pypi_0 pypi

sqlite 3.40.0 h2bbff1b_0

tensorboard 2.2.2 pypi_0 pypi

tensorboard-plugin-wit 1.8.1 pypi_0 pypi

tensorflow 2.2.0 pypi_0 pypi

tensorflow-estimator 2.2.0 pypi_0 pypi

termcolor 2.1.1 pypi_0 pypi

terminado 0.17.1 pypi_0 pypi

tinycss2 1.2.1 pypi_0 pypi

tornado 6.2 pypi_0 pypi

traitlets 5.6.0 pypi_0 pypi

typing-extensions 4.4.0 pypi_0 pypi

urllib3 1.26.13 pypi_0 pypi

vc 14.2 h21ff451_1

vs2015_runtime 14.27.29016 h5e58377_2

wcwidth 0.2.5 pypi_0 pypi

webencodings 0.5.1 pypi_0 pypi

websocket-client 1.4.2 pypi_0 pypi

werkzeug 2.2.2 pypi_0 pypi

wheel 0.37.1 pyhd3eb1b0_0

wincertstore 0.2 py37haa95532_2

wrapt 1.14.1 pypi_0 pypi

zipp 3.11.0 pypi_0 pypi

(rlcode5) C:\Users\its>python --version

Python 3.7.7

ljp4122님의 프로필

ljp4122

질문자

2022.12.07

위에 보시는 바와 같이 아나콘다 가상환경에 말씀하신 버전으로 설치되어 있습니다.

그리고 현재 에러 타입이 numpy shape 변환문제인데... 제가 아직 코드를 잘 볼 줄 몰라서 그렇습니다만... 배열로 자료를 받아서 저장할 때 부터 문제가 있는 거 같습니다.

확인 부탁드립니다.

안녕하세요 ljp4122님.

제가 말씀드린 버전과 동일한 패키지가 설치된 것 같습니다. 하지만, 교재와 다르게 아나콘다 환경을 사용하시는 것 같습니다. 아나콘다는 데이터 분석에 있어서 많은 장점을 제공해주고 있지만, 초보자가 사용할 때 환경문제가 있을 수 있습니다. 데이터분석 환경 설정에 익숙한 분이라면 아나콘다를 사용하는 것이 좋지만, 초보자의 경우 아나콘다를 삭제하시고 본 강의에서 제공하는 튜토리얼과 동일한 환경을 구성하시는 것을 추천드립니다.

동일하게 설정했는데도 계속 같은 문제가 발생하시면 제 이메일(multicore.it@gmail.com)으로 연락처와 연락 가능한 시간을 남겨주시면 전화드리도록 하겠습니다.

감사합니다.

bhlee420님의 프로필

bhlee420

2022.12.09

안녕하세요 강의 잘 듣고 있습니다

저도 질문자와 똑같은 문제가 있네요. 아나콘다를 쓰지 않고 tensorflow 2.2, numpy 1.19.3 python 3.7.7을 쓰고 있습니다. 같은 에러가 나오는데 .. 또 다른 설정상에 꼭 해줘야 하는 부분이 더 있는건가요 ?

감사합니다

제가 강의를 올린 후 관련 패키지에 많은 변화가 있었습니다.

다음과 같은 3가지 종류 오류가 발생할 수 있습니다.

1번 오류는 protoc 패키지가 변경된 원인으로 발생하고 있습니다.

protobuf 패키지를 삭제하시고 3.8 버전을 설치하시면 문제를 해결할 수 있습니다.

2번 오류는 gym 패키지에서 제공하는 reset함수 문제입니다. 반환 값을 dictionary로 주기 때문에 첫 번째 값을 선택하는 state[0] 코드를 추가하면 문제가 해결됩니다.

3번 오류는 gym 패키지에서 제공하는 step 함수의 반환 값이 하나 더 추가되어 발생하는 문제입니다. 수신측에 none2 변수를 하나 더 추가하면 해결할 수 있습니다.

1. 예제 프로그램 실행 시 다음과 같이 오류 발생

TypeError: Descriptors cannot not be created directly.

If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.

If you cannot immediately regenerate your protos, some other possible workarounds are:

1. Downgrade the protobuf package to 3.20.x or lower.

2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

1. 해결 방법

pip uninstall protobuf

pip install protobuf==3.8

2. dictionary 처리 해결 방법

state = env.reset()

state = state[0] #코드 추가

3. return값 추가 부분 해결 방법

state_next, reward, done, none, none2 = self.env.step(action)

테스트가 완료되는 데로 github에 신규 코드를 업로드하겠습니다.

감사합니다.

 

bhlee420님의 프로필

bhlee420

2022.12.12

감사합니다. 지적하신 대로 하니 잘 동작하네요