Mám resnet
model, který jsem pracovat. Původně jsem trénoval modelu pomocí šarží obrazů. Nyní, že je vycvičený, chci dělat závěr na jediném snímku (224x224 s 3 barevné kanály). Nicméně, když jsem se projít obraz mého modelu prostřednictvím model(imgs[:, :, :, 2])
Jsem se:
DimensionMismatch("Rank of x and w must match! (3 vs. 4)")
Stacktrace:
[1] DenseConvDims(x::Array{Float32, 3}, w::Array{Float32, 4}; kwargs::Base.Iterators.Pairs{Symbol, Any, NTuple{4, Symbol}, NamedTuple{(:stride, :padding, :dilation, :groups), Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Int64}}})
@ NNlib ~/.julia/packages/NNlib/P9BhZ/src/dim_helpers/DenseConvDims.jl:58
[2] (::Conv{2, 2, typeof(identity), Array{Float32, 4}, Vector{Float32}})(x::Array{Float32, 3})
@ Flux ~/.julia/packages/Flux/ZnXxS/src/layers/conv.jl:162
...
...
Pro referenční, imgs[:, :, :, 2]
dává:
224×224×3 Array{Float32, 3}:
[:, :, 1] =
0.4 0.419608 0.482353 0.490196 … 0.623529 0.611765 0.627451
0.423529 0.478431 0.513726 0.486275 0.65098 0.65098 0.65098
0.419608 0.47451 0.541176 0.54902 0.682353 0.670588 0.639216
0.52549 0.529412 0.568627 0.564706 0.588235 0.592157 0.572549
0.556863 0.541176 0.513726 0.505882 0.603922 0.635294 0.654902
0.486275 0.490196 0.521569 0.537255 … 0.635294 0.654902 0.65098
0.529412 0.513726 0.533333 0.537255 0.603922 0.596078 0.596078
0.521569 0.52549 0.505882 0.513726 0.580392 0.576471 0.572549
...
...
Nějaký nápad, co jsem zde chybí? Dělá model vyžadují stejné rozměry v závěr, že to byl vycvičený na? Existuje způsob, jak zkontrolovat a ujistěte se, že dávám správné vstupní rozměry?
Aktualizace: jsem si uvědomil, že musím projít v počtu snímků (což je v tomto případě jedna), tak jsem to udělal:
img1 = cat(imgs[:, :, :, 1]; dims = ndims(imgs[:, :, :, 1]) + 1 )
img1
model(img1)
která funguje, jak se očekávalo. Nechám tuto otázku otevřenou, jestli má někdo odpověď na původní otázky o kontrolu vstupních ztlumí.