如何解决如何将割炬层的标识符传递给ONNX图
对于TensorFlow,层的名称也是ONNX图中节点的name
:
import onnx
from tensorflow import keras
import keras2onnx
model = keras.Sequential([
keras.layers.Conv2D(4,(3,3),input_shape=(5,5,2),name='rainbow'),keras.layers.Conv2D(8,name='flower')])
model_onnx = keras2onnx.convert_keras(model)
nodes = model_onnx.graph.node
for node in nodes:
print('type:',node.op_type,'- name:',node.name)
输出:
type: Conv - name: rainbow
type: Conv - name: flower
但是,对于PyTorch,名称字段是一个空字符串:
import torch
from torch import nn
import onnx
class NetConv(nn.Module):
def __init__(self):
super(NetConv,self).__init__()
self.conv_banana = nn.Conv2d(2,4,3)
self.conv_apple = nn.Conv2d(4,8,3)
def forward(self,x):
x = self.conv_banana(x)
return self.conv_apple(x)
model = NetConv()
image = torch.randn(1,2,5)
filename_model = 'model.onnx'
torch.onnx.export(model,image,filename_model,export_params=False)
model_onnx = onnx.load(filename_model)
nodes = model_onnx.graph.node
for node in nodes:
print('type:',node.name)
print('inputs:',node.input)
输出:
type: Conv - name:
inputs: ['input.1','conv_banana.weight','conv_banana.bias']
type: Conv - name:
inputs: ['5','conv_apple.weight','conv_apple.bias']
我希望将图层名称分配给图节点的name
属性,但是此属性为''
。
是否有任何干净的方法来获取标识符,以便可以将PyTorch中的图层分配给ONNX图中的节点?
我唯一想到的解决方法是从图中节点的input
中提取层的名称,但是这种做法很麻烦。
更新:
上面的输出是使用Torch == 1.4.0生成的。
对于torch == 1.6.0,name
属性不再是一个空字符串,而且也比一个空字符串更有用:
type: Conv - name: Conv_0
inputs: ['input.1','conv_banana.bias']
type: Conv - name: Conv_1
inputs: ['5','conv_apple.bias']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。