Tensorflow timeline trace

根据

https://github.com/tensorflow/tensorflow/issues/1824

简单进行了测试

修改运行的脚本增加如下关键代码

例如mnist_softmax.py

from__future__importabsolute_import

from__future__importdivision

from__future__importprint_function

# Import data

fromtensorflow.examples.tutorials.mnistimportinput_data

fromtensorflow.python.clientimporttimeline

importtensorflow as tf

flags=tf.app.flags

FLAGS=flags.FLAGS

flags.DEFINE_string('data_dir','/tmp/data/','Directory for storing data')

mnist=input_data.read_data_sets(FLAGS.data_dir, one_hot=True)

# Create the model

x=tf.placeholder(tf.float32, [None,784])

W=tf.Variable(tf.zeros([784,10]))

b=tf.Variable(tf.zeros([10]))

y=tf.nn.softmax(tf.matmul(x, W)+b)

# Define loss and optimizer

y_=tf.placeholder(tf.float32, [None,10])

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)

# Train

intiOp=tf.initialize_all_variables()

# Init run_metadata

run_metadata=tf.RunMetadata()

# Open file to save trace

trace_file=open('/tmp/timeline.ctf.json','w')

sess=tf.Session()

sess.run(intiOp)

foriinrange(500):

batch_xs, batch_ys=mnist.train.next_batch(100)

sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys},

options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE),

run_metadata=run_metadata)

# Test trained model

correct_prediction=tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

accuracy=tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

#timeline

trace=timeline.Timeline(step_stats=run_metadata.step_stats)

trace_file.write(trace.generate_chrome_trace_format())

打开chrome浏览器输入

chrome://tracing/

选择Load按钮加载输出的json文件

W,S按键可以缩放,A,D按键可以移动,具体帮助点击右上角“?”按钮