는 방법을 확인하는 입력 크기의 모형에 기재되어 있습니다.jl?

0

질문

resnet 모델 있습니다. 내가 원래 훈련된 모델을 사용하여 일괄 이점 유의하여 주시기 바랍니다. 이제 그것은 훈련을 하고 싶추에 하나의 이미지(224x224 3 색 채널). 그러나를 통과 할 때 이미지 내 모델을 통한 model(imgs[:, :, :, 2]) 을 얻을:

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
...
...

에 대한 참조 imgs[:, :, :, 2] 하면 다음과 같습니다.

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
...
...

어떤 아이디어가 누락되었나? 모델 필요한은 같은 치수 중추는 훈련을 받았는가? 이 있을 확인하는 방법이 확인 내가 주는 올바른 치수를 입력?

업데이트:는 것을 깨달았을 통과해야에서의 수는 이미지(이 경우에는 것),그래서 그렇게 했어:

img1 = cat(imgs[:, :, :, 1]; dims = ndims(imgs[:, :, :, 1]) + 1 )
img1
model(img1)

는 예상대로 작동합니다. 나는 이 질문을 열면 사람이 답변을 원래의 질문에 대해 확인 입력이 어두워집니다.

flux.jl julia
2021-11-22 17:25:52
3

최고의 응답

4

당신이 발견되 NNlib.jl(라이브러리를 구현하는 회선에 대한 유량)기대하는 입력을 배치 차원이다. 당신이 통과하는 경우 하나의 이미지할 수 있는 패드 단일 차원이다. 거기에 여러 가지 방법으로 이를 달성하기 위해.

첫째로,문제는:

julia> size(x[:, :, :, 1])
(3, 3, 16)

컬러 이미지해야 4D(폭 고도에 의하여 색상으로 깊이 배치에 의해).

하나 옵션이 패드에 배치 차원이 사용하는 범위에 대한 인덱스:

julia> size(x[:, :, :, 1:1])
(3, 3, 16, 1)

또 다른 옵션 받은 경우는 하나의 이미지로 3D 배열을 사용하는 것입 Flux.unsqueeze:

julia> size(Flux.unsqueeze(x[:, :, :, 1], ndims(x)))
(3, 3, 16, 1)

julia> all(Flux.unsqueeze(x[:, :, :, 1], ndims(x)) .== x[:, :, :, 1])
true

우리는 전달 unsqueeze 이 차원은 우리가 원하는 패드입니다. 우리의 경우,이해야 마지막원 x (즉,배치 차원)우리는 우리에서 얻을 수 있습니 줄리아와 ndims(x).

2021-11-22 18:25:51
4

Sorry,난 정말 전문가가 아니다,그러나지 않는 문제 imgs[:, :, :, 2] 상자 3 차원 텐서? 수 imgs[:, :, :, 2:2] 작동으로,그것은 네 가지 차원 텐서 마지막으로 차원 중 하나와 같은(이후에 하나의 이미지)

2021-11-22 18:23:47
3

모두 답이 올바른 정말입니다. 간단한 reshape(x, size(x)..., 1) 하이 너무 가정, x 이는 3 차원 이미지 텐서 당신에 인덱싱으로 배치

2021-11-22 18:41:39

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................