def make_env(): env = gym_super_mario_bros.make('SuperMarioBros-v3') env = JoypadSpace(env, RIGHT_ONLY) env = CustomRewardAndDoneEnv(env) # 報酬とエピソード完了の変更 env = StochasticFrameSkip(env, n=4, stickprob=0.25) # スティッキーフレームスキップ env = Downsample(env, 2) # ダウンサンプリング env = FrameStack(env, 4) # フレームスタック env = ScaledFloatFrame(env) # 状態の正規化 env = Monitor(env, log_dir, allow_early_resets=True) env.seed(0) # シードの指定 set_global_seeds(0) env = DummyVecEnv([lambda: env]) # ベクトル環境の生成 print('行動空間: ', env.action_space) print('状態空間: ', env.observation_space) return env
import gym import retro from stable_baselines.common.vec_env import DummyVecEnv from stable_baselines import DQN from stable_baselines.common import set_global_seeds from stable_baselines.bench import Monitor from baselines.common.retro_wrappers import * from util import log_dir, callback, AirstrikerDiscretizer, CustomRewardAndDoneEnv import time # 環境の生成 env = retro.make(game='Airstriker-Genesis', state='Level1') env = AirstrikerDiscretizer(env) # 行動空間を離散空間に変換 env = CustomRewardAndDoneEnv(env) # 報酬とエピソード完了の変更 env = StochasticFrameSkip(env, n=4, stickprob=0.25) # スティッキーフレームスキップ env = Downsample(env, 2) # ダウンサンプリング env = Rgb2gray(env) # グレースケール env = FrameStack(env, 4) # フレームスタック env = ScaledFloatFrame(env) # 状態の正規化 env = Monitor(env, log_dir / demo, allow_early_resets=True) env = DummyVecEnv([lambda: env]) # モデルの読み込み (1) model = DQN.load('airstriker_model') # モデルのテスト state = env.reset() total_reward = 0 for i in range(5000): # 環境の描画 env.render()
import retro import time import os from stable_baselines.common.vec_env import DummyVecEnv from stable_baselines import PPO2 from stable_baselines.common import set_global_seeds from stable_baselines.bench import Monitor from baselines.common.retro_wrappers import * from util import log_dir, SaveOnBestTrainingRewardCallback, AirstrikerDiscretizer, CustomRewardAndDoneEnv env = retro.make(game="Airstriker-Genesis", state="Level1") env = AirstrikerDiscretizer(env) env = CustomRewardAndDoneEnv(env) env = StochasticFrameSkip(env, n=4, stickprob=0.25) env = Downsample(env, 2) env = Rgb2gray(env) env = FrameStack(env, 4) env = ScaledFloatFrame(env) env = Monitor(env, log_dir, allow_early_resets=True) print(f"行動空間: {env.action_space}") print(f"状態空間: {env.observation_space}") env.seed(0) set_global_seeds(0) env = DummyVecEnv([lambda: env]) model = PPO2("CnnPolicy", env, verbose=0) model = PPO2.load("./logs/best_model.zip", env=env, verbose=0)
from stable_baselines.common.vec_env import DummyVecEnv from baselines.common.retro_wrappers import * from stable_baselines.bench import Monitor from util import CustomRewardAndDoneEnv, callback, log_dir from stable_baselines.common import set_global_seeds # 環境の生成 env = retro.make(game='SonicTheHedgehog-Genesis', state='GreenHillZone.Act1') env = SonicDiscretizer(env) # 行動空間を離散空間に変換 env = StochasticFrameSkip(env, n=4, stickprob=0.25) # スティッキーフレームスキップ env = Downsample(env, 2) # ダウンサンプリング env = Rgb2gray(env) # グレースケール env = FrameStack(env, 4) # フレームスタック env = ScaledFloatFrame(env) # 状態の正規化 env = TimeLimit(env, max_episode_steps=4500) # 5分タイムアウト env = CustomRewardAndDoneEnv(env) # カスタム報酬関数・完了条件 env = Monitor(env, log_dir, allow_early_resets=True) print('状態空間: ', env.observation_space) print('行動空間: ', env.action_space) # シードの指定 env.seed(0) set_global_seeds(0) # ベクトル環境の生成 env = DummyVecEnv([lambda: env]) # モデルの生成 #model = PPO2(policy=CnnPolicy, env=env, verbose=0, learning_rate=0.000025) # モデルの読み込み