LoginSignup
0
2

More than 1 year has passed since last update.

AIを使って不労所得の道へ(3)~学習結果をTensorboardで可視化させてみた~【AIncomeプロジェクト】

Posted at

はじめに

素人でも戦略的に取引したい

株やFXの知識がないため,戦略的な取引ができない素人が多いと思います.私もその一人です.
そこで,強化学習の力を借りて戦略的に取引をしようと思います.

AIncomeプロジェクト

AIで所得(Income)を得るため「AIncome」と名付けました.

前回までの取り組み

前回は強化学習とそれをシミュレーションするOpenAI Gymの説明をしました.さらには,ランダムで行動を決定して売り買いしてみたところ,ランダムでも利益が出るような結果になっていました.

今回の取り組みの概要

今回はtensorboardを使って,学習結果を可視化させていきます.

Google Drive setting

from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/AIncome
!pwd

作業フォルダ

!mkdir AutoTrade02
%cd  AutoTrade02
!pwd

必要パッケージのインストール

#!pip install gym[all] -U
!pip install "gym==0.19.0"
!pip install stable-baselines[mpi]
!pip install tensorflow==1.14.0
!pip install pyqt5
!pip install imageio
!pip install gym-anytrading
!pip uninstall tensorboard-plugin-wit --yes

インポート

import os, gym
import gym_anytrading
import matplotlib.pyplot as plt
from gym_anytrading.envs import TradingEnv, ForexEnv, StocksEnv, Actions, Positions
from gym_anytrading.datasets import FOREX_EURUSD_1H_ASK, STOCKS_GOOGL
from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import PPO2
from stable_baselines import ACKTR
from stable_baselines.bench import Monitor
from stable_baselines.common import set_global_seeds

設定

# ログフォルダの生成
log_dir = './logs/'
os.makedirs(log_dir, exist_ok=True)


# train data
idx1 = 10
idx2 = 300

# test data
idx3 = 400

環境の生成

ここで,前回のコードに加えて,tensorboard_logのパラメータにログフォルダを追加しておきます.

# 環境の生成
env = gym.make('forex-v0', frame_bound=(idx1, idx2), window_size=10)
env = Monitor(env, log_dir, allow_early_resets=True)

# シードの指定
env.seed(0)
set_global_seeds(0)

# ベクトル化環境の生成
env = DummyVecEnv([lambda: env])

# モデルの生成
model = PPO2('MlpPolicy', env, tensorboard_log=log_dir)
#model = ACKTR('MlpPolicy', env, verbose=1)

# モデルの読み込み
# model = PPO2.load('trading_model')

学習

# モデルの学習
model.learn(total_timesteps=128000)

# モデルの保存
model.save('trading_model3.0')

モデルのテスト

env = gym.make('forex-v0', frame_bound=(idx2, idx3), window_size=10)
env.seed(0)
state = env.reset()
while True:
    # 行動の取得
    action, _ = model.predict(state)
    # 1ステップ実行
    state, reward, done, info = env.step(action)
    # エピソード完了
    if done:
        print('info:', info)
        break

グラフのプロット

plt.cla()
env.render_all()
plt.show()

ここからtensorboard関係のコードです.
これで,可視化できます.

# Load the TensorBoard notebook extension
%load_ext tensorboard
%tensorboard --logdir logs/

可視化するとこんな感じになります.

無事に,可視化することができました.

使用したソースコード

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2