Eine sehr irrelevante Anmerkung.
TensorFlows tf.set_random_seed ()
scheint sich etwas anders zu verhalten als Numpysnp.random.seed ()
.
Es scheint, dass Numpy den Startwert jedes Mal zurücksetzt, wenn "np.random.seed ()" und dieselbe Pseudozufallssequenz erneut generiert, während TensorFlow dies nicht tut.
Ich habe einen Satz geschrieben, der nicht japanisch ist, aber wenn ich den folgenden Code ausführe, kommt er wahrscheinlich durch.
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]
Wenn Sie den Code vollständig erneut ausführen, wird dieselbe Pseudozufallssequenz erneut generiert, sodass die Reproduzierbarkeit des Experiments kein Problem darstellt. Wenn Sie jedoch weiterhin "% run hoge.py" auf IPython ausführen, wird der Code gesetzt. Ich war vorsichtig, weil es nicht zurückgesetzt wurde, also bemerkte ich es.
Übrigens ist R die gleiche Bezeichnung wie 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