本記事ではAI学習を簡単に体験することが可能なライブラリ「OpenAI Gym」のインストール方法と実行例について載せる。
▼本コードの実施例…インベーダーゲーム で敵にやられないように自動で学習している様子
VIDEO www.youtube.com
▼インストール手順(Windows ) (1) $ pip install gym (2) $ pip install --no-index -f https://github.com/Kojoley/atari-py/releases atari _py (3) 他に、下記3つをインストールする(まだインストールしてない場合) $ conda install tensorflow $ conda install tqdm $ pip install opencv -python (4) gitをインストール → https://gitforwindows.org/ (5) $ git clone https://github.com/openai/gym.git →カレントフォルダへgymというフォルダがダウンロード(DL)される。 (6) 上記(3)でDLしたgymフォルダへ移動し、$ pip install -e . (7) $ pip install keras-rl
▼本プログラム コード中にある「ENV_NAME=」 で例えば以下からゲームを指定できる。末尾の-v0はverのことで指定が必要です。スペースインベーダー :SpaceInvaders-v0倒立振子 :CartPole-v0 車の山登り:MountainCar-v0
import numpy as np
import gym
from gym import wrappers
from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten
from keras.optimizers import Adam
from rl.agents.dqn import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory
ENV_NAME = 'SpaceInvaders-v0'
env = gym.make(ENV_NAME)
env = wrappers.Monitor(env, './movie' , video_callable=(lambda ep: ep % 200 == 0 ), force=True )
np.random.seed(123 )
env.seed(123 )
nb_actions = env.action_space.n
model = Sequential()
model.add(Flatten(input_shape=(1 ,) + env.observation_space.shape))
model.add(Dense(16 ))
model.add(Activation('relu' ))
model.add(Dense(16 ))
model.add(Activation('relu' ))
model.add(Dense(16 ))
model.add(Activation('relu' ))
model.add(Dense(nb_actions))
model.add(Activation('linear' ))
print (model.summary())
policy = BoltzmannQPolicy()
memory = SequentialMemory(limit=50000 , window_length=1 )
dqn = DQNAgent(model=model, nb_actions=nb_actions, policy=policy,
memory=memory,
nb_steps_warmup=1000 , gamma=.99 ,
target_model_update=10000 ,
train_interval=4 , delta_clip=1. )
dqn.compile(Adam(lr=1e-3 ), metrics=['mae' ])
try :
dqn.fit(env, nb_steps=10000 , visualize=True , verbose=2 )
except :
dqn.fit(env, nb_steps=10000 , visualize=False , verbose=2 )
dqn.save_weights('dqn_{}_weights.h5f' .format(ENV_NAME), overwrite=True )
try :
dqn.test(env, nb_episodes=5 , visualize=True , verbose=2 )
except :
dqn.test(env, nb_episodes=5 , visualize=False , verbose=2 )
env.close()
●本家のリンク
https://gym.openai.com/docs/
●備考・エラー例1:AttributeError: module 'gym' has no attribute 'make' ⇒対処方法:自作ファイルでファイル名「gym.py」があれば、他の名に変える・エラー例2:TypeError: len is not well defined for symbolic Tensors. (activation_3/Identity:0) Please call `x.shape` rather than `len(x)` for shape information. ⇒対処方法:下記のようにテンソル フローのバージョンを指定してインストする $ pip install tensorflow==2.0.0-beta 現在はダウングレードすることにもなり得るので、下記も参考下さい
Python Anaconda環境をコピーする。その環境下でTensorFlowをダウングレードする手順 - PythonとVBAで世の中を便利にする
以上
<広告>
リンク