[英]Incorrect logging and summaries in tensorflow
我正在使用tensorflow v0.11.0。 我正在訓練兩個網絡: D
和G
基本問題是我無法記錄正在顯示的值,這導致混亂。 d
和g
損失的印刷價值與我所記錄的完全不同。
#Defining Losses
loss_d1 = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(out_1, 0.9*tf.ones_like(in_1)))
loss_d2 = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(out_2, tf.zeros_like(in_2)))
loss_g = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(out_2, tf.ones_like(in_2)))
#combining losses
loss_d = loss_d1 + loss_d2
#creating summaries
loss_d1_sum = tf.scalar_summary("loss_d1", loss_d1)
loss_d2_sum = tf.scalar_summary("loss_d2", loss_d2)
loss_d_sum = tf.scalar_summary("loss_d", loss_d)
loss_g_sum = tf.scalar_summary("loss_g", loss_g)
#defining the optimizers
op_g = tf.train.AdamOptimizer(learning_rate).minimize(loss_g, var_list=vars_g)
op_d = tf.train.AdamOptimizer(learning_rate).minimize(loss_d, var_list=vars_d)
#merging summaries
self.g_sum = tf.merge_summary([loss_g])
self.d_sum = tf.merge_summary([loss_d, loss_d1, loss_d2])
self.writer = tf.train.SummaryWriter('./logs', sess.graph)
我一次更新D
,兩次更新G
:
# Update D network
_, summary_str = self.sess.run([op_d, d_sum], feed_dict= fd)
self.writer.add_summary(summary_str, counter)
# Update G network
_, summary_str = self.sess.run([op_g, g_sum], feed_dict= fd)
self.writer.add_summary(summary_str, counter)
# Update G network again
_, summary_str = self.sess.run([op_g, g_sum], feed_dict= fd)
self.writer.add_summary(summary_str, counter)
我正在運行以下2
次。 每次迭代都有1 D
更新和2 G
更新。
# Printing stats to stdout
[loss_d, loss_g] = sess.run([loss_d, loss_g], feed_dict = fd)
print 'd_loss:{}, g_loss:{}'.format(loss_d, loss_g)
這給了我輸出:
d_loss: 1.43663359, g_loss: 0.68026298
d_loss: 1.72329867, g_loss: 0.55464995
我現在使用以下代碼提取值以使用matplotlib
進行繪制。
for entry in tf.train.summary_iterator(log_file)
for v in entry.summary.value:
if v.tag == 'loss_d'
g.append(v.simple_value)
elif v.tag == 'loss_g'
d.append(v.simple_value)
print len(d), len(d) # 2 4
print 'd_loss', d # d_loss [2.196472406387329, 1.200419545173645]
print 'g_loss', g # g_loss [6.2136077880859375, 2.953800678253174, 5.429494857788086, 2.6036014556884766]
我是否正確實施了日志記錄方案? 我認為loss_d
和loss_g
的值可能已更改,因為我在登錄后運行了ops。 但這意味着最后一個op必須保存值,並且在執行sess.run
不得更改。 fd
在整個迭代過程中保持不變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.