A very irrelevant note.
TensorFlow's tf.set_random_seed ()
seems to behave slightly differently from Numpy'snp.random.seed ()
.
It seems that Numpy resets the seed every time np.random.seed ()
and generates the same pseudo-random sequence again, whereas TensorFlow does not.
I wrote a sentence in which Japanese is not good, but when I execute the following code, it probably comes through.
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]
If you re-execute the code completely, the same pseudo-random number sequence will be generated again, so there is no problem in terms of experiment reproducibility, but for example, if you continue to do % run hoge.py
on IPython, it will be seeded. I was careful because it wasn't reset, so I noticed.
By the way, R is the same denomination as 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