Kerasの学習の再現性を担保する

学習のたびに精度(結果)が違ってしまい、後になって資料のためのグラフを作ろうとしたときなどたまに困るので再現性を担保する方法を調べました。

参考になった記事

結論

基本的に1つ目のqiitaの記事に書いてあるとおりでokでした。 自分の実験ではコメントアウトしている2行はコメントアウトした状態でも結果は再現されていました。

import numpy as np
import random
import keras.backend as K
import tensorflow as tf

np.random.seed(seed=0)

# os.environ['PYTHONHASHSEED'] = '0'
# random.seed(0)

session_conf = tf.ConfigProto(
    intra_op_parallelism_threads=1,
    inter_op_parallelism_threads=1
)

tf.set_random_seed(0)
sess = tf.Session(graph=tf.get_default_graph(), config=session_conf)
K.set_session(sess)

後からグラフを作るとき以外にも精度向上を求めて無駄?に同じ学習パラメータでの学習を繰り返すことを強制的に諦めることができ助かりますw