学習のたびに精度(結果)が違ってしまい、後になって資料のためのグラフを作ろうとしたときなどたまに困るので再現性を担保する方法を調べました。
参考になった記事
- https://qiita.com/okotaku/items/8d682a11d8f2370684c9
- https://machinelearningmastery.com/reproducible-results-neural-networks-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