tensorflow的tfprof输出理论FLOPS?

时间:2017-12-15 11:53:59

标签: machine-learning tensorflow profiling flops

我使用tfprof来分析机器学习算法。这是示例输出: ==================模型分析报告====================== 节点名称| #fllo_ops _TFProfRoot( - / 3163.86b flops)  InceptionResnetV2 / InceptionResnetV2 / Mixed_6a / Branch_1 / Conv2d_0b_3x3 / convolution(173.41b / 173.41b flops)   InceptionResnetV2 / InceptionResnetV2 / Conv2d_4a_3x3 / convolution(167.25b / 167.25b flops)

这里,在' 167.25b / 167.25b flops'中,第二个167.25b表示什么?这是理论上的失败吗?

1 个答案:

答案 0 :(得分:0)

是的,这是理论上的失误。 Ops可以使用RegisterStatistics注释来注册统计信息。

Here就是这样一个注册的例子:

@ops.RegisterStatistics("MatMul", "flops")
def _calc_mat_mul_flops(graph, node):
  """Calculates the compute resources needed for MatMul."""
  transpose_a = node.attr["transpose_a"].b
  a_shape = graph_util.tensor_shape_from_node_def_name(graph, node.input[0])
  a_shape.assert_is_fully_defined()
  if transpose_a:
    k = int(a_shape[0])
  else:
    k = int(a_shape[1])
  output_shape = graph_util.tensor_shape_from_node_def_name(graph, node.name)
  output_shape.assert_is_fully_defined()
  output_count = np.prod(output_shape.as_list())
  return ops.OpStats("flops", (k * output_count * 2))