Mémo très hors de propos.
«Tf.set_random_seed ()» de TensorFlow semble se comporter légèrement différemment de «np.random.seed ()» de Numpy.
Il semble que Numpy réinitialise la graine à chaque fois np.random.seed ()
et génère à nouveau la même séquence pseudo-aléatoire, contrairement à TensorFlow.
J'ai écrit une phrase qui n'est pas japonaise, mais lorsque j'exécute le code suivant, cela passe probablement.
import numpy as np
import tensorflow as tf
print '===== Numpy ====='
np.random.seed(0)
print np.random.uniform(size=5)
print np.random.uniform(size=5)
print 'Numpy can reset seed'
np.random.seed(0)
print np.random.uniform(size=5)
print np.random.uniform(size=5)
print '===== TensorFlow ====='
tf.set_random_seed(0)
with tf.Session() as sess:
print sess.run(tf.random_uniform([5]))
print sess.run(tf.random_uniform([5]))
print 'TensorFlow does not reset seed'
tf.set_random_seed(0)
with tf.Session() as sess:
print sess.run(tf.random_uniform([5]))
print sess.run(tf.random_uniform([5]))
===== Numpy =====
[ 0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 ]
[ 0.64589411 0.43758721 0.891773 0.96366276 0.38344152]
Numpy can reset seed
[ 0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 ]
[ 0.64589411 0.43758721 0.891773 0.96366276 0.38344152]
===== TensorFlow =====
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 4
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 4
[ 0.32064009 0.69209957 0.7421422 0.86931682 0.95991254]
[ 0.70880806 0.3939954 0.67383504 0.34078181 0.98877013]
TensorFlow does not reset seed
[ 0.30350876 0.06209636 0.98059976 0.51447523 0.15706789]
[ 0.48785222 0.40416086 0.97456396 0.57969069 0.09107506]
Si vous réexécutez complètement le code, la même séquence pseudo-aléatoire sera à nouveau générée, il n'y a donc pas de problème en termes de reproductibilité de l'expérience, mais par exemple, si vous continuez à faire % run hoge.py
sur IPython, elle sera amorcée. J'ai fait attention car il n'a pas été réinitialisé, alors j'ai remarqué.
À propos, R est la même dénomination que Numpy.
> set.seed(0)
> runif(5)
[1] 0.8966972 0.2655087 0.3721239 0.5728534 0.9082078
> set.seed(0)
> runif(5)
[1] 0.8966972 0.2655087 0.3721239 0.5728534 0.9082078
Recommended Posts