Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ONNX doesn't seem to be able to load ONNX models #22

Open
BrianGun opened this issue Jun 18, 2019 · 2 comments
Open

ONNX doesn't seem to be able to load ONNX models #22

BrianGun opened this issue Jun 18, 2019 · 2 comments

Comments

@BrianGun
Copy link

I tried loading 6 different ONNX models from this website https://github.com/onnx/models. None of them loaded correctly. Here is my Julia version info:

Julia Version 1.1.0
Commit 80516ca202 (2019-01-21 21:24 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, broadwell)
Environment:
JULIA_EDITOR = "C:\Program Files\Microsoft VS Code\Code.exe"

Here are the error messages when attempting to load the models:

julia> ONNX.load_model("/users/bguenter/Documents/allfiles/Projects/synthetics/ONNX/tiny_Yolov2/model.onnx")
ERROR: KeyError: key "convolution.W" not found
Stacktrace:
[1] getindex at .\dict.jl:478 [inlined]
[2] (::getfield(ONNX, Symbol("##118#120")){Dict{String,IVertex}})(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:61
[3] iterate at .\generator.jl:47 [inlined]
[4] collect_to!(::Array{IVertex,1}, ::Base.Generator{Array{AbstractString,1},getfield(ONNX, Symbol("##118#120")){Dict{String,IVertex}}}, ::Int64, ::Int64) at .\array.jl:651
[5] collect_to_with_first! at .\array.jl:630 [inlined]
[6] _collect(::Array{AbstractString,1}, ::Base.Generator{Array{AbstractString,1},getfield(ONNX, Symbol("##118#120")){Dict{String,IVertex}}}, ::Base.EltypeUnknown, ::Base.HasShape{1}) at .\array.jl:624
[7] collect_similar(::Array{AbstractString,1}, ::Base.Generator{Array{AbstractString,1},getfield(ONNX, Symbol("##118#120")){Dict{String,IVertex}}}) at .\array.jl:548
[8] map(::Function, ::Array{AbstractString,1}) at .\abstractarray.jl:2018
[9] _graph(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:61
[10] graph(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:96
[11] code(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:104
[12] write_julia_file(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:221
[13] load_model(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:237
[14] top-level scope at none:0

julia> ONNX.load_model("/users/bguenter/Documents/allfiles/Projects/synthetics/ONNX/mnist/model.onnx")
ERROR: ArgumentError: Dict(kv): kv needs to be an iterator of tuples or pairs
Stacktrace:
[1] Dict(::Base.Generator{Array{ONNX.Proto.AttributeProto,1},typeof(ONNX.convert_model)}) at .\dict.jl:132
[2] convert_array at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:17 [inlined]
[3] convert(::ONNX.Proto.NodeProto) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:162
[4] convert(::ONNX.Proto.GraphProto) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:125
[5] write_weights(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:191
[6] load_model(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:236
[7] top-level scope at none:0

julia> ONNX.load_model("/users/bguenter/Documents/allfiles/Projects/synthetics/ONNX/ssd/model.onnx")
ERROR: DimensionMismatch("new dimensions () must be consistent with array size 0")
Stacktrace:
[1] (::getfield(Base, Symbol("#throw_dmrsa#193")))(::Tuple{}, ::Int64) at .\reshapedarray.jl:41
[2] reshape(::Array{Float32,1}, ::Tuple{}) at .\reshapedarray.jl:45
[3] get_weights(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:14
[4] weights(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:41
[5] write_weights(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:192
[6] load_model(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:236
[7] top-level scope at none:0

julia> ONNX.load_model("/users/bguenter/Documents/allfiles/Projects/synthetics/ONNX/inception/model.onnx")
ERROR: MethodError: no method matching (::getfield(ONNX, Symbol("##3#4")))(::Dict{Any,Any}, ::IVertex, ::IVertex, ::IVertex, ::IVertex)
Closest candidates are:
#3(::Any, ::Any, ::Any) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\ops.jl:14
Stacktrace:
[1] _graph(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:61
[2] graph(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:96
[3] code(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:104
[4] write_julia_file(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:221
[5] load_model(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:237
[6] top-level scope at none:0

julia> ONNX.load_model("/users/bguenter/Documents/allfiles/Projects/synthetics/ONNX/fasterRcnnR50Fpn1x/faster_rcnn_R_50_FPN_1x.onnx")
ERROR: DimensionMismatch("new dimensions (7, 7, 3, 64) must be consistent with array size 0")
Stacktrace:
[1] (::getfield(Base, Symbol("#throw_dmrsa#193")))(::NTuple{4,Int64}, ::Int64) at .\reshapedarray.jl:41
[2] reshape(::Array{Float32,1}, ::NTuple{4,Int64}) at .\reshapedarray.jl:45
[3] get_weights(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:14
[4] weights(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:41
[5] write_weights(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:192
[6] load_model(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:236
[7] top-level scope at none:0

julia> ONNX.load_model("/users/bguenter/Documents/allfiles/Projects/synthetics/ONNX/yolov3/yolov3.onnx")
ERROR: KeyError: key :Pad not found
Stacktrace:
[1] getindex(::Dict{Symbol,Any}, ::Symbol) at .\dict.jl:478
[2] _graph(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:0
[3] graph(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:96
[4] code(::ONNX.Types.Graph) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\graph\graph.jl:104
[5] write_julia_file(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:221
[6] load_model(::String) at C:\Users\bguenter.julia\packages\ONNX\7ZopS\src\convert.jl:237
[7] top-level scope at none:0

@ayush-1506
Copy link
Member

@BrianGun I tried some of the models you mentioned:

model 1. It's because of an error in the onnx model itself : see onnx/models#60.

model 2. This has been fixed. Use the master branch rather than the tagged version (]add ONNX#master)

model 4. This also has been fixed. Use the master branch (see point 2 above). Note: As discussed on slack , Flux doesn't support LRNorm right now. The generated code will have LRNorm function calls, and you'll have to manually add LRNorm definition. (I'll remove this once Flux starts supporting it : FluxML/Flux.jl#720 you can just copy the function definition from the PR, since we need to use it only in the inference mode).

I'll get back to you with the results of the other models.

@BrianGun
Copy link
Author

BrianGun commented Jun 21, 2019 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants