2016-06-24 2 views
0

В учебнике TensorFlow MNIST начинающих, код выдержки здесь:Как я могу получить значение ошибки во время обучения в Tensorflow?

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) 
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) 
sess = tf.Session() 
sess.run(init) 

#-----training loop starts here----- 
for i in range(1000): 
    batch_xs, batch_ys = mnist.train.next_batch(100) 
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) 

Можно ли доступ/извлекать значения cross_entropy ошибок, весов и смещений в то время как внутри цикла? Я хочу построить ошибку и, возможно, гистограмму весов.

Спасибо!

+0

Посмотрите [TensorBoard] (https://www.tensorflow.org/versions/r0.9/how_tos/summaries_and_tensorboard/index.html#tensorboard-visualizing-learning). – hbaderts

ответ

3

Как говорят несколько человек, TensorBoard является для этой цели.

Здесь я могу дать вам как.

Сначала давайте определим функцию для регистрации min, max, mean и std-dev для тензора.

def variable_summaries(var, name): 

    with tf.name_scope("summaries"): 
    mean = tf.reduce_mean(var) 
    tf.scalar_summary('mean/' + name, mean) 

    with tf.name_scope('stddev'): 
     stddev = tf.sqrt(tf.reduce_sum(tf.square(var - mean))) 

    tf.scalar_summary('stddev/' + name, stddev) 
    tf.scalar_summary('max/' + name, tf.reduce_max(var)) 
    tf.scalar_summary('min/' + name, tf.reduce_min(var)) 
    tf.histogram_summary(name, var) 

Затем создайте операцию суммирования после построения графика, как показано ниже. Этот код сохраняет вес и смещение первого слоя с кросс-энтропией в каталоге «mnist_tf_log».

variable_summaries(W_fc1, "W_fc1") 
variable_summaries(b_fc1, "b_fc1") 
tf.scalar_summary("cross_entropy:", cross_entropy) 

summary_op = tf.merge_all_summaries() 
summary_writer = tf.train.SummaryWriter("mnist_tf_log", graph_def=sess.graph) 

Теперь вы все настроены. Вы можете зарегистрировать эти данные, вернув summary_op и передав его в summary_writer.

Ниже приведен пример регистрации каждые 10 этапов обучения.

for i in range(1000): 
    batch_xs, batch_ys = mnist.train.next_batch(100) 
    if i % 10 == 0: 
     _, summary_str = sess.run([train_step, summary_op], feed_dict={x: batch_xs, y_: batch_ys}) 
     summary_writer.add_summary(summary_str, i) 
     summary_writer.flush() 
    else: 
     sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) 

Выполнение TensorBoard после запуска кода.

python /path/to/tensorboard/tensorboard.py --logdir=mnist_tf_log 

Тогда вы можете увидеть результат, открыв http://localhost:6006 с помощью веб-браузера.

enter image description here

Смежные вопросы