Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;索引器:列表索引超出范围“;调用tensorflow冻结图时出错_Python_Tensorflow_Keras - Fatal编程技术网

Python &引用;索引器:列表索引超出范围“;调用tensorflow冻结图时出错

Python &引用;索引器:列表索引超出范围“;调用tensorflow冻结图时出错,python,tensorflow,keras,Python,Tensorflow,Keras,我有一个经过微调的vgg16模型,使用keras进行了培训 我想在Android中使用这个模型。遵循教程,第一步是将keras模型转换为Tensorflowpb文件格式 这些是我的模型中的图层名称 layer_names=[layer.name for layer in model.layers] print(layer_names) 输出 'input_1', 'block1_conv1', 'block1_conv2', 'block1_pool', 'block2_conv1', 'bl

我有一个经过微调的vgg16模型,使用keras进行了培训

我想在Android中使用这个模型。遵循教程,第一步是将keras模型转换为Tensorflow
pb
文件格式

这些是我的模型中的图层名称

layer_names=[layer.name for layer in model.layers]
print(layer_names)
输出

'input_1', 'block1_conv1', 'block1_conv2', 'block1_pool', 'block2_conv1', 'block2_conv2', 'block2_pool', 'block3_conv1', 'block3_conv2', 'block3_conv3', 'block3_pool', 'block4_conv1', 'block4_conv2', 'block4_conv3', 'block4_pool', 'block5_conv1', 'block5_conv2', 'block5_conv3', 'block5_pool', 'flatten', 'dense_1', 'dropout_1', 'dense_2']
我使用此函数将keras模型转换为tensorflow pb。

输出

IndexError                                Traceback (most recent call last)
 in 
      4 session.run(init)
      5 
----> 6 export_model(tf.train.Saver(), model, model_name, input_node_names, output_node_name)

 in export_model(saver, model, MODEL_NAME, input_node_names, output_node_name)
     18         False, 'out/' + MODEL_NAME + '.chkp', output_node_name, \
     19         "save/restore_all", "save/Const:0", \
---> 20         'out/frozen_' + MODEL_NAME + '.pb', True, "")
     21 
     22     input_graph_def = tf.GraphDef()

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/tools/freeze_graph.py in 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_whitelist, variable_names_blacklist, input_meta_graph, input_saved_model_dir, saved_model_tags, checkpoint_version)
    361       input_saved_model_dir,
    362       saved_model_tags.replace(" ", "").split(","),
--> 363       checkpoint_version=checkpoint_version)
    364 
    365 

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/tools/freeze_graph.py in freeze_graph_with_def_protos(***failed resolving arguments***)
    188       try:
    189         saver = saver_lib.Saver(
--> 190             var_list=var_list, write_version=checkpoint_version)
    191       except TypeError as e:
    192         # `var_list` is required to be a map of variable names to Variable

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saver.py in __init__(self, var_list, reshape, sharded, max_to_keep, keep_checkpoint_every_n_hours, name, restore_sequentially, saver_def, builder, defer_build, allow_empty, write_version, pad_step_number, save_relative_paths, filename)
    830           time.time() + self._keep_checkpoint_every_n_hours * 3600)
    831     elif not defer_build:
--> 832       self.build()
    833     if self.saver_def:
    834       self._check_saver_def()

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saver.py in build(self)
    842     if context.executing_eagerly():
    843       raise RuntimeError("Use save/restore instead of build in eager mode.")
--> 844     self._build(self._filename, build_save=True, build_restore=True)
    845 
    846   def _build_eager(self, checkpoint_path, build_save, build_restore):

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saver.py in _build(self, checkpoint_path, build_save, build_restore)
    879           restore_sequentially=self._restore_sequentially,
    880           filename=checkpoint_path,
--> 881           build_save=build_save, build_restore=build_restore)
    882     elif self.saver_def and self._name:
    883       # Since self._name is used as a name_scope by builder(), we are

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saver.py in _build_internal(self, names_to_saveables, reshape, sharded, max_to_keep, keep_checkpoint_every_n_hours, name, restore_sequentially, filename, build_save, build_restore)
    485 
    486     saveables = saveable_object_util.validate_and_slice_inputs(
--> 487         names_to_saveables)
    488     if max_to_keep is None:
    489       max_to_keep = 0

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saving/saveable_object_util.py in validate_and_slice_inputs(names_to_saveables)
    336                          # Avoid comparing ops, sort only by name.
    337                          key=lambda x: x[0]):
--> 338     for converted_saveable_object in saveable_objects_for_op(op, name):
    339       _add_saveable(saveables, seen_ops, converted_saveable_object)
    340   return saveables

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saving/saveable_object_util.py in saveable_objects_for_op(op, name)
    205       else:
    206         yield ResourceVariableSaveable(
--> 207             variable, "", name)
    208 
    209 

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saving/saveable_object_util.py in __init__(self, var, slice_spec, name)
     81     self._var_shape = var.shape
     82     if isinstance(var, ops.Tensor):
---> 83       self.handle_op = var.op.inputs[0]
     84       tensor = var
     85     elif isinstance(var, resource_variable_ops.ResourceVariable):

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in __getitem__(self, i)
   2193 
   2194     def __getitem__(self, i):
-> 2195       return self._inputs[i]
   2196 
   2197 # pylint: enable=protected-access

IndexError: list index out of range

您不应该将“saver”作为冻结图的第二个参数传递吗?@tomgalpin在我从中获得函数的原始代码中没有。(文章中给出了链接)。除了将model_NAME作为参数传递外,我没有更改export_model函数。您是否应该将“saver”作为冻结_graph的第二个参数传递?@tomgalpin在我获取函数的原始代码中没有这样做。(文章中给出了链接)。我没有更改export_model函数,只是将model_NAME作为参数传递。
IndexError                                Traceback (most recent call last)
 in 
      4 session.run(init)
      5 
----> 6 export_model(tf.train.Saver(), model, model_name, input_node_names, output_node_name)

 in export_model(saver, model, MODEL_NAME, input_node_names, output_node_name)
     18         False, 'out/' + MODEL_NAME + '.chkp', output_node_name, \
     19         "save/restore_all", "save/Const:0", \
---> 20         'out/frozen_' + MODEL_NAME + '.pb', True, "")
     21 
     22     input_graph_def = tf.GraphDef()

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/tools/freeze_graph.py in 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_whitelist, variable_names_blacklist, input_meta_graph, input_saved_model_dir, saved_model_tags, checkpoint_version)
    361       input_saved_model_dir,
    362       saved_model_tags.replace(" ", "").split(","),
--> 363       checkpoint_version=checkpoint_version)
    364 
    365 

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/tools/freeze_graph.py in freeze_graph_with_def_protos(***failed resolving arguments***)
    188       try:
    189         saver = saver_lib.Saver(
--> 190             var_list=var_list, write_version=checkpoint_version)
    191       except TypeError as e:
    192         # `var_list` is required to be a map of variable names to Variable

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saver.py in __init__(self, var_list, reshape, sharded, max_to_keep, keep_checkpoint_every_n_hours, name, restore_sequentially, saver_def, builder, defer_build, allow_empty, write_version, pad_step_number, save_relative_paths, filename)
    830           time.time() + self._keep_checkpoint_every_n_hours * 3600)
    831     elif not defer_build:
--> 832       self.build()
    833     if self.saver_def:
    834       self._check_saver_def()

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saver.py in build(self)
    842     if context.executing_eagerly():
    843       raise RuntimeError("Use save/restore instead of build in eager mode.")
--> 844     self._build(self._filename, build_save=True, build_restore=True)
    845 
    846   def _build_eager(self, checkpoint_path, build_save, build_restore):

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saver.py in _build(self, checkpoint_path, build_save, build_restore)
    879           restore_sequentially=self._restore_sequentially,
    880           filename=checkpoint_path,
--> 881           build_save=build_save, build_restore=build_restore)
    882     elif self.saver_def and self._name:
    883       # Since self._name is used as a name_scope by builder(), we are

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saver.py in _build_internal(self, names_to_saveables, reshape, sharded, max_to_keep, keep_checkpoint_every_n_hours, name, restore_sequentially, filename, build_save, build_restore)
    485 
    486     saveables = saveable_object_util.validate_and_slice_inputs(
--> 487         names_to_saveables)
    488     if max_to_keep is None:
    489       max_to_keep = 0

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saving/saveable_object_util.py in validate_and_slice_inputs(names_to_saveables)
    336                          # Avoid comparing ops, sort only by name.
    337                          key=lambda x: x[0]):
--> 338     for converted_saveable_object in saveable_objects_for_op(op, name):
    339       _add_saveable(saveables, seen_ops, converted_saveable_object)
    340   return saveables

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saving/saveable_object_util.py in saveable_objects_for_op(op, name)
    205       else:
    206         yield ResourceVariableSaveable(
--> 207             variable, "", name)
    208 
    209 

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/saving/saveable_object_util.py in __init__(self, var, slice_spec, name)
     81     self._var_shape = var.shape
     82     if isinstance(var, ops.Tensor):
---> 83       self.handle_op = var.op.inputs[0]
     84       tensor = var
     85     elif isinstance(var, resource_variable_ops.ResourceVariable):

~/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in __getitem__(self, i)
   2193 
   2194     def __getitem__(self, i):
-> 2195       return self._inputs[i]
   2196 
   2197 # pylint: enable=protected-access

IndexError: list index out of range