tensorflow 性能分析工具profile使用指南
2019-06-21 本文已影响15人
涂山容容
在卷积神经网络设计好之后,难免会想要知道当前网络哪里跑的最慢,参数量有多少,flops有多少。此时,可以借助的是profile这个工具了,效果杠杠的。
由于自己用的是python,所以这里就调用其Python接口。
首先,导入包:
from tensorflow.python.profiler import model_analyzer
from tensorflow.python.profiler import option_builder
添加了profile之后报错
libcupti.so.9.0: cannot open shared object file
根据
export
LD_LIBRARY_PATH="/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64"
修改 ~/.bashrc文件
修改后的为
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64{LD_LIBRARY_PATH}}
然后 source ~/.bashrc
在当前终端与接下来终端有效
具体的使用的话,自己现在用的比较粗浅,没有用什么高大上的,就是能打印出来而已
my_profiler = model_analyzer.Profiler(graph=Session.graph)
run_options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
_s =Session.run(seg_pred, feed_dict={image: img}, options=run_options, run_metadata=run_metadata)
my_profiler.add_step(step=i, run_meta=run_metadata)
profile_op_builder = option_builder.ProfileOptionBuilder()
# profile_op_builder.select(['micros', 'occurrence'])
profile_op_builder.select(['micros','float_ops'])
profile_op_builder.order_by('micros')
profile_op_builder.with_max_depth(5)
# my_profiler.profile_graph(profile_op_builder.build())
my_profiler.profile_name_scope(profile_op_builder.build())
就OK了