(input_graph,
                 input_saver,
                 input_binary,
                 input_checkpoint,
                 output_node_names,
                 restore_op_name,
                 filename_tensor_name,
                 output_graph,
                 clear_devices,
                 initializer_nodes,
                 variable_names_blacklist="")
Converts all variables in a graph and checkpoint into constants.
Converts all variables in a graph and checkpoint into constants.
Converts all variables in a graph and checkpoint into constants .
def freeze_graph(input_graph,
                 input_saver,
                 input_binary,
                 input_checkpoint,
                 output_node_names,
                 restore_op_name,
                 filename_tensor_name,
                 output_graph,
                 clear_devices,
                 initializer_nodes,
                 variable_names_blacklist=""):
  """Converts all variables in a graph and checkpoint into constants."""

  del restore_op_name, filename_tensor_name  # Unused by updated loading code.

  if not gfile.Exists(input_graph):
    print("Input graph file '" + input_graph + "' does not exist!")
    return -1

  if input_saver and not gfile.Exists(input_saver):
    print("Input saver file '" + input_saver + "' does not exist!")
    return -1

  # 'input_checkpoint' may be a prefix if we're using Saver V2 format
  if not saver_lib.checkpoint_exists(input_checkpoint):
    print("Input checkpoint '" + input_checkpoint + "' doesn't exist!")
    return -1

  if not output_node_names:
    print("You need to supply the name of a node to --output_node_names.")
    return -1

  input_graph_def = graph_pb2.GraphDef()
  mode = "rb" if input_binary else "r"
  with gfile.FastGFile(input_graph, mode) as f:
    if input_binary:
      input_graph_def.ParseFromString(f.read())
    else:
      text_format.Merge(f.read(), input_graph_def)
  # Remove all the explicit device specifications for this node. This helps to
  # make the graph more portable.
  if clear_devices:
    for node in input_graph_def.node:
      node.device = ""

  _ = importer.import_graph_def(input_graph_def, name="")

  with session.Session() as sess:
    if input_saver:
      with gfile.FastGFile(input_saver, mode) as f:
        saver_def = saver_pb2.SaverDef()
        if input_binary:
          saver_def.ParseFromString(f.read())
        else:
          text_format.Merge(f.read(), saver_def)
        saver = saver_lib.Saver(saver_def=saver_def)
        saver.restore(sess, input_checkpoint)
    else:
      var_list = {}
      reader = pywrap_tensorflow.NewCheckpointReader(input_checkpoint)
      var_to_shape_map = reader.get_variable_to_shape_map()
      for key in var_to_shape_map:
        try:
          tensor = sess.graph.get_tensor_by_name(key + ":0")
        except KeyError:
          # This tensor doesn't exist in the graph (for example it's
          # 'global_step' or a similar housekeeping element) so skip it.
          continue
        var_list[key] = tensor
      saver = saver_lib.Saver(var_list=var_list)
      saver.restore(sess, input_checkpoint)
      if initializer_nodes:
        sess.run(initializer_nodes)

    variable_names_blacklist = (variable_names_blacklist.split(",") if
                                variable_names_blacklist else None)
    output_graph_def = graph_util.convert_variables_to_constants(
        sess,
        input_graph_def,
        output_node_names.split(","),
        variable_names_blacklist=variable_names_blacklist)

  with gfile.GFile(output_graph, "wb") as f:
    f.write(output_graph_def.SerializeToString())
  print("%d ops in the final graph." % len(output_graph_def.node))
def freeze_graph ( input_graph , input_saver , input_binary , input_checkpoint , output_node_names , restore_op_name , filename_tensor_name , output_graph , clear_devices , initializer_nodes , variable_names_blacklist = "" ) : del restore_op_name , filename_tensor_name # Unused by updated loading code. if not gfile . Exists ( input_graph ) : print ( "Input graph file '" + input_graph + "' does not exist!" ) return - 1 if input_saver and not gfile . Exists ( input_saver ) : print ( "Input saver file '" + input_saver + "' does not exist!" ) return - 1 # 'input_checkpoint' may be a prefix if we're using Saver V2 format if not saver_lib . checkpoint_exists ( input_checkpoint ) : print ( "Input checkpoint '" + input_checkpoint + "' doesn't exist!" ) return - 1 if not output_node_names : print ( "You need to supply the name of a node to --output_node_names." ) return - 1 input_graph_def = graph_pb2 . GraphDef ( ) mode = "rb" if input_binary else "r" with gfile . FastGFile ( input_graph , mode ) as f : if input_binary : input_graph_def . ParseFromString ( f . read ( ) ) else : text_format . Merge ( f . read ( ) , input_graph_def ) # Remove all the explicit device specifications for this node. This helps to # make the graph more portable. if clear_devices : for node in input_graph_def . node : node . device = "" _ = importer . import_graph_def ( input_graph_def , name = "" ) with session . Session ( ) as sess : if input_saver : with gfile . FastGFile ( input_saver , mode ) as f : saver_def = saver_pb2 . SaverDef ( ) if input_binary : saver_def . ParseFromString ( f . read ( ) ) else : text_format . Merge ( f . read ( ) , saver_def ) saver = saver_lib . Saver ( saver_def = saver_def ) saver . restore ( sess , input_checkpoint ) else : var_list = { } reader = pywrap_tensorflow . NewCheckpointReader ( input_checkpoint ) var_to_shape_map = reader . get_variable_to_shape_map ( ) for key in var_to_shape_map : try : tensor = sess . graph . get_tensor_by_name ( key + ":0" ) except KeyError : # This tensor doesn't exist in the graph (for example it's # 'global_step' or a similar housekeeping element) so skip it. continue var_list [ key ] = tensor saver = saver_lib . Saver ( var_list = var_list ) saver . restore ( sess , input_checkpoint ) if initializer_nodes : sess . run ( initializer_nodes ) variable_names_blacklist = ( variable_names_blacklist . split ( "," ) if variable_names_blacklist else None ) output_graph_def = graph_util . convert_variables_to_constants ( sess , input_graph_def , output_node_names . split ( "," ) , variable_names_blacklist = variable_names_blacklist ) with gfile . GFile ( output_graph , "wb" ) as f : f . write ( output_graph_def . SerializeToString ( ) ) print ( "%d ops in the final graph." % len ( output_graph_def . node ) )