【问题标题】:Scope name error when converting pretrained model from pytorch to keras将预训练模型从 pytorch 转换为 keras 时出现范围名称错误
【发布时间】:2023-02-21 23:00:29
【问题描述】:

ValueError Traceback(最近的调用 最后) /tmp/ipykernel_2113989/1063976035.py 中 11 12 # 我们应该指定输入张量的形状 ---> 13 k_model = pytorch_to_keras(模型, input_var, [(3, 224, 224,)], verbose=True) 14 #k_model = pytorch_to_keras(模型,input_var,[(3,无,无,)],详细=真) 15

~/anaconda3/envs/torch/lib/python3.7/site-packages/pytorch2keras/converter.py 在 pytorch_to_keras(模型,args,input_shapes,change_ordering, 详细、名称策略、使用优化器、do_constant_folding) 82 k_model = onnx_to_keras(onnx_model=onnx_model,输入名称=输入名称, 83 input_shapes=input_shapes,name_policy=name_policy, ---> 84 verbose=verbose, change_ordering=change_ordering) 85 86 返回 k_model

~/anaconda3/envs/torch/lib/python3.7/site-packages/onnx2keras/converter.py 在 onnx_to_keras(onnx_model,input_names,input_shapes,name_policy, 冗长,更改顺序) 第179章 第180章 --> 181 keras_names 182) 183 如果是实例(keras_names,列表):

~/anaconda3/envs/torch/lib/python3.7/site-packages/onnx2keras/operation_layers.py 在 convert_clip(节点,参数,图层,lambda_func,节点名称, keras_name) 39 lambda_func[keras_name]=目标层 40 ---> 41层[node_name] =层(input_0) 42 43

~/anaconda3/envs/torch/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/base_layer.py 在称呼(自我,输入,*args,**kwargs) 第819章 第820章 --> 821 with graph.as_default(), backend.name_scope(self._name_scope()): 822 # Build layer if applicable(如果build方法已经被 823 # 已覆盖)。

~/anaconda3/envs/torch/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py 在进入(自我)6442 其他:6443 范围 = get_default_graph().name_scope(self._name) -> 6444 作用域名称 = 作用域。进入()6445 self._exit_fns.append(范围。出口) 6446 返回 scope_name

~/anaconda3/envs/torch/lib/python3.7/contextlib.py 中进入(自己) 110 删除 self.args,self.kwds,self.func 111尝试: --> 112 返回下一个(self.gen) 113 除了 StopIteration: 114 从 None 引发 RuntimeError("generator didn't yield")

~/anaconda3/envs/torch/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py in name_scope(self, name) 4127 # 操作名称正则表达式,其中 约束初始字符。 4128 如果没有 _VALID_OP_NAME_REGEX.匹配(名称): -> 4129 raise ValueError("'%s' is not a valid scope name" % name) 4130 old_stack = self._name_stack 4131 如果不是 name: # 对于 name=None 和 name="" 我们都重新设置为空范围。

ValueError: 'onnx::Conv_369' 不是有效的范围名称

我正在尝试通过 pytorch2keras (https://github.com/gmalivenko/pytorch2keras) 将 pytorch 预训练模型转换为 keras。

我曾尝试安装旧版本的 Onnx (1.8.1) 并尝试从主分支 (https://github.com/onnx/onnx) 安装 Onnx。

但是,我仍然面临错误。我可以知道如何解决吗?

【问题讨论】:

  • 请提供足够的代码,以便其他人可以更好地理解或重现问题。

标签: tensorflow keras pytorch onnx


【解决方案1】:

尝试为 onnx_2_keras 设置 name_policy='renumerate' 或 name_policy='short'。

【讨论】:

    【解决方案2】:

    我经历了同样的问题。在我的例子中,我创建了一个自定义 CNN火炬并将其转换为凯拉斯模型我得到了范围名称冲突。设置选项name_policy='重新枚举'为我做了把戏。

    【讨论】:

      猜你喜欢
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 2019-05-06
      • 2019-05-19
      相关资源
      最近更新 更多