1

如何从 ONNX 模型中获取权重/偏置矩阵值,我目前可以从model.onnx. 我加载模型,然后读取图形节点以获得相同的结果:

import onnx
m = onnx.load('model.onnx')
print(m.graph.node)
4

3 回答 3

5
from onnx import numpy_helper
MODEL_PATH = "....../resnet50"
_model = onnx.load(MODEL_PATH + "/model.onnx")
INTIALIZERS=_model.graph.initializer
Weight=[]
for initializer in INTIALIZERS:
    W= numpy_helper.to_array(initializer)
    Weight.append(W)
于 2018-09-20T11:29:02.193 回答
1

以下代码可帮助您从 onnx 模型创建状态字典。

import onnx
from onnx import numpy_helper
onnx_model   = onnx.load("model.onnx")
INTIALIZERS  = onnx_model.graph.initializer
onnx_weights = {}
for initializer in INTIALIZERS:
    W = numpy_helper.to_array(initializer)
    onnx_weights[initializer.name] = W
于 2020-07-29T14:59:36.713 回答
1

在官方 git repo 上发布问题后,我得到了问题的答案。我们可以从 中的初始化程序访问权重值m.graph

weights = m.graph.initializer

要获得权重矩阵,您需要使用numpy_helperfrom onnx

from onnx import numpy_helper
w1 = numpy_helper.to_array(weights[0])
于 2018-09-20T06:13:38.207 回答