본문 바로가기
Have Done/Reinforcement Learning

[강화학습] OPEN AI GYM issue

by 에아오요이가야 2022. 4. 11.

강화 학습 공부를 위해 이런저런 실습 코드를 따라 치던 도중 

 

import gym
env = gym.make('~')

이러한 형태의 코드 자체가 실행이 안 되는 아주아주 답답한 상황에 이르렀다.

저 ~ 에 들어가는 부분은 게임의 이름들인데

 

1. classic control

https://gym.openai.com/envs/#classic_control

 

Gym: A toolkit for developing and comparing reinforcement learning algorithms

Open source interface to reinforcement learning tasks. The gym library provides an easy-to-use suite of reinforcement learning tasks. import gym env = gym.make("CartPole-v1") observation = env.reset() for _ in range(1000): env.render() action = env.action_

gym.openai.com

2.  Box 2D

https://gym.openai.com/envs/#box2d

 

Gym: A toolkit for developing and comparing reinforcement learning algorithms

Open source interface to reinforcement learning tasks. The gym library provides an easy-to-use suite of reinforcement learning tasks. import gym env = gym.make("CartPole-v1") observation = env.reset() for _ in range(1000): env.render() action = env.action_

gym.openai.com

3. Atari

https://gym.openai.com/envs/#atari

 

Gym: A toolkit for developing and comparing reinforcement learning algorithms

Open source interface to reinforcement learning tasks. The gym library provides an easy-to-use suite of reinforcement learning tasks. import gym env = gym.make("CartPole-v1") observation = env.reset() for _ in range(1000): env.render() action = env.action_

gym.openai.com

와 같이 다양한 게임들이 있는데 환경 자체가 안 만들어지니 답답함을 주체할 수가 없다

 

그래서 그냥 하나하나 다 때려 넣어봤다 우선

1. classic control에 있는 게임들을 바로 make가 돼서 실습을 진행할 수 있었다.

2. Box2d에 있는 게임들도 되겠거니 했는데 안되더라

 

AttributeError: module 'gym.envs.box2d' has no attribute 'LunarLander' 요러한 에러가 나왔다 Box 2D에 있는 모든 이들이 게임 이름만 다르게 없다더라

 

해결은 다음 코드 실행 후에 됐다

pip install box2d-py

이제 2.Box2D 게임들까지 실습에 활용할 수 있게 됐다.

 

3. Atari에 있는 게임들은 ~에 뭘 집어넣어도 

AttributeError: module 'gym.envs.atari' has no attribute 'AtariEnv'  이 에러가 뜨더라 진짜 다쳐봄

 

pip install ale-py

이거 하면 된다고 많은 사람들이 적어놨는데 난 안된다.

pip uninstall gym ale-py && pip install 'gym[atari]'

이걸 입력한뒤론 다른 에러가 나오기 시작했다.

env = gym.make('SpaceInvaders-v4')

다음과 같은데 중요해 보이는 부분만 추려보겠다.

 

A.L.E: Arcade Learning Environment (version 0.7.4+069f8 bd)
[Powered by Stella]
gym.error.Error: We're Unable to find the game "SpaceInvaders". Note: Gym no longer distributes ROMs. If you own a license to use the necessary ROMs for research purposes you can download them via `pip install gym [accept-rom-license]`. Otherwise, you should try importing "SpaceInvaders" via the command `ale-import-roms`. If you believe this is a mistake perhaps your copy of "SpaceInvaders" is unsupported. To check if this is the case try providing the environment variable `PYTHONWARNINGS=default::ImportWarning:ale_py.roms`. For more information see: https://github.com/mgbellemare/Arcade-Learning-Environment#rom-management

 

 

SpaceInvader를 사용할 수 없다는 건가? 다른 게임 입력하면 다른가? 아니고요 뭘 입력하건 다 안된다

 

일단 상업적 목적은 아니니까 하라는 대로 해보자

pip install 'gym[accept-rom-license]'

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gym/envs/registration.py:506: UserWarning: WARN: The environment SpaceInvaders-v4 is out of date. You should consider upgrading to version `v5` with the environment ID `ALE/SpaceInvaders-v5`.
  f"The environment {path} is out of date. You should consider "
A.L.E: Arcade Learning Environment (version 0.7.4+069f8 bd)
[Powered by Stella]
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gym/utils/seeding.py:139: DeprecationWarning: WARN: Function `hash_seed(seed, max_bytes)` is marked as deprecated and will be removed in the future. 
  "Function `hash_seed(seed, max_bytes)` is marked as deprecated and will be removed in the future. "
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gym/utils/seeding.py:176: DeprecationWarning: WARN: Function `_bigint_from_bytes(bytes)` is marked as deprecated and will be removed in the future. 
  "Function `_bigint_from_bytes(bytes)` is marked as deprecated and will be removed in the future. "

 

 

위와 같은 에러가 떠서 다음과 같이 해주었다

env = gym.make('ALE/SpaceInvaders-v5')

됐다. 이 맛이야..

 

에러 찾으면서 해결할 때마다 글들이 현재 시점과 가깝고 개수가 현저히 줄어든 것을 보고, 문제 해결할 때까지 고민하는 사람은 그리 많지 않다는 것을 느낀다.

댓글