parameters: (program)
return_statement: return uni_op_freq, adj_2_op_freq
docstring: Statistics of Op frequency.
  
      Args:
          program(Program): The current Program.
  
      Returns:
          uni_op_freq(dict): the single op frequency.
          adj_2_op_freq(dict): the two adjacent ops frequency.
  
      Examples:
  
          >>> import paddle.fluid as fluid
          >>> uni_op_freq, adj_2_op_freq = fluid.contrib.op_freq_statistic(
          >>>        fluid.default_main_program())
          >>> for op_type, op_num in uni_op_freq:
          >>>     print("%s  \t  %d" % (op_type, op_num))
          >>> for op_type, op_num in adj_2_op_freq:
          >>>     print("%s  \t  %d" % (op_type, op_num))
docstring_summary: Statistics of Op frequency.
docstring_tokens: Statistics of Op frequency .
function: def op_freq_statistic(program):
      """
      Statistics of Op frequency.
  
      Args:
          program(Program): The current Program.
  
      Returns:
          uni_op_freq(dict): the single op frequency.
          adj_2_op_freq(dict): the two adjacent ops frequency.
  
      Examples:
  
          >>> import paddle.fluid as fluid
          >>> uni_op_freq, adj_2_op_freq = fluid.contrib.op_freq_statistic(
          >>>        fluid.default_main_program())
          >>> for op_type, op_num in uni_op_freq:
          >>>     print("%s  \t  %d" % (op_type, op_num))
          >>> for op_type, op_num in adj_2_op_freq:
          >>>     print("%s  \t  %d" % (op_type, op_num))
  
      """
  
      if not isinstance(program, Program):
          raise TypeError("The input type should be Porgram."
                          "But you passed in %s" % (type(program)))
  
      uni_op_freq = OrderedDict()
      adj_2_op_freq = OrderedDict()
      op_in_ops = OrderedDict()
  
      parameters = [p.name for p in program.blocks[0].all_parameters()]
  
      # get uni_op_freq
      for op in program.global_block().ops:
          had_recorded = False
          for var_name in op.output_arg_names:
              if var_name in parameters:
                  continue
              if not had_recorded and uni_op_freq.has_key(op.type):
                  uni_op_freq[op.type] += 1
                  had_recorded = True
              elif not had_recorded:
                  uni_op_freq[op.type] = 1
                  had_recorded = True
  
      # get adj_2_op_freq
      var_gen_op = {}
      for op in program.global_block().ops:
          for var_name in op.input_arg_names:
              if var_name in parameters:
                  continue
              if var_gen_op.has_key(var_name):
                  assert len(var_gen_op[var_name]) > 0
                  if op_in_ops.has_key(op.type):
                      op_in_ops[op.type].append(var_gen_op[var_name][-1])
                  else:
                      op_in_ops[op.type] = [var_gen_op[var_name][-1]]
              else:
                  print("Var's generate op is not found,%s, %s" %
                        (var_name, op.type))
  
          for var_name in op.output_arg_names:
              if var_gen_op.has_key(var_name):
                  var_gen_op[var_name].append(op.type)
              else:
                  var_gen_op[var_name] = [op.type]
  
      for op, in_ops in op_in_ops.iteritems():
          for in_op in in_ops:
              op_op = in_op + "->" + op
              if adj_2_op_freq.has_key(op_op):
                  adj_2_op_freq[op_op] += 1
              else:
                  adj_2_op_freq[op_op] = 1
  
      uni_op_freq = sorted(
          uni_op_freq.items(), key=lambda item: item[1], reverse=True)
      adj_2_op_freq = sorted(
          adj_2_op_freq.items(), key=lambda item: item[1], reverse=True)
  
      return uni_op_freq, adj_2_op_freq
function_tokens: def op_freq_statistic ( program ) : if not isinstance ( program , Program ) : raise TypeError ( "The input type should be Porgram." "But you passed in %s" % ( type ( program ) ) ) uni_op_freq = OrderedDict ( ) adj_2_op_freq = OrderedDict ( ) op_in_ops = OrderedDict ( ) parameters = [ p . name for p in program . blocks [ 0 ] . all_parameters ( ) ] # get uni_op_freq for op in program . global_block ( ) . ops : had_recorded = False for var_name in op . output_arg_names : if var_name in parameters : continue if not had_recorded and uni_op_freq . has_key ( op . type ) : uni_op_freq [ op . type ] += 1 had_recorded = True elif not had_recorded : uni_op_freq [ op . type ] = 1 had_recorded = True # get adj_2_op_freq var_gen_op = { } for op in program . global_block ( ) . ops : for var_name in op . input_arg_names : if var_name in parameters : continue if var_gen_op . has_key ( var_name ) : assert len ( var_gen_op [ var_name ] ) > 0 if op_in_ops . has_key ( op . type ) : op_in_ops [ op . type ] . append ( var_gen_op [ var_name ] [ - 1 ] ) else : op_in_ops [ op . type ] = [ var_gen_op [ var_name ] [ - 1 ] ] else : print ( "Var's generate op is not found,%s, %s" % ( var_name , op . type ) ) for var_name in op . output_arg_names : if var_gen_op . has_key ( var_name ) : var_gen_op [ var_name ] . append ( op . type ) else : var_gen_op [ var_name ] = [ op . type ] for op , in_ops in op_in_ops . iteritems ( ) : for in_op in in_ops : op_op = in_op + "->" + op if adj_2_op_freq . has_key ( op_op ) : adj_2_op_freq [ op_op ] += 1 else : adj_2_op_freq [ op_op ] = 1 uni_op_freq = sorted ( uni_op_freq . items ( ) , key = lambda item : item [ 1 ] , reverse = True ) adj_2_op_freq = sorted ( adj_2_op_freq . items ( ) , key = lambda item : item [ 1 ] , reverse = True ) return uni_op_freq , adj_2_op_freq