我使用张量板来可视化我的神经网络的学习。目前,我正在使用这样大小的数据集,相同,比如80%/ 20%分成训练和开发集合,留给我处理期间不适合内存的数据,所以我必须使用批处理进行开发。
当我这样做时,我最终会在张量表上找到以下形状:
浅绿色线表示批量摘要,而深绿色表示未加密的开发处理。我使用相同大小的数据集并拆分这两个图表。
以下是用于填充摘要的代码
# accuracy definition in network
network.correct_predictions = tf.equal(predictions, tf.argmax(input_y, 1))
network.accuracy = tf.reduce_mean(tf.cast(correct_predictions, "float"), name="accuracy")
network.loss = tf.reduce_mean(_losses)
# accuracy summary
acc_summary = tf.scalar_summary("accuracy", network.accuracy)
loss_summary = tf.scalar_summary("loss", network.loss)
# dev data summary writer
dev_summary_operation = tf.merge_summary([loss_summary, acc_summary])
dev_summary_writer = tf.train.SummaryWriter(dev_summary_dir, session.graph)
# dev step
def dev_step(x_batch, y_batch)
feed_dict = {network.input_x: x_batch, network.input_y: y_batch}
step, summaries, loss, accuracy = session.run([global_step, dev_summary_operation, network.loss, network.accuracy], feed_dict)
dev_summary_writer.add_summary(summaries, step)
训练步骤中的相同方法给出了正常线(那些不是前卫的线),因为训练是在两种情况下进行批处理的。 在这两种情况下(批处理或不批处理),开发摘要在100个培训批次中更新一次。
对此类行为的原因以及可能的解决方案的建议非常受欢迎并受到高度赞赏。