Mám resnet
model, ktorý som pracoval s. Pôvodne som nahral do modelu pomocou série obrázkov. Teraz, že to je vyškolený, chcem urobiť záver, na jednej snímky (224x224 s 3 farebné kanály). Avšak, keď som prejsť na obrázok pre môj model cez model(imgs[:, :, :, 2])
Som si:
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
...
...
Pre odkaz, imgs[:, :, :, 2]
dáva:
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
...
...
Nejakú predstavu, čo som chýba tu? Má model požadovať rovnaké rozmery počas záver, že to bol vyškolený na? Existuje spôsob, ako zistiť to, aby sa ubezpečil som dávať správny vstup rozmery?
Aktualizácia: uvedomil som si, že musím prejsť počet obrázkov (čo v tomto prípade je jedno), tak som robil:
img1 = cat(imgs[:, :, :, 1]; dims = ndims(imgs[:, :, :, 1]) + 1 )
img1
model(img1)
ktorý funguje tak, ako sa očakávalo. Nechám túto otázku otvorí, ak má niekto odpoveď na pôvodnú otázky týkajúce sa kontroly vstupu, matný.