Flux.jl model vždy výstupy 1.0 po přidání Sigmoid aktivační funkce

0

Otázka

Můj původní problém byl, že jsem chtěl svůj model pouze výstup 0-1 tak můžu mapu zpět na můj kategorický obrázky štítky (Flux.jl omezit proměnné mezi 0 a 1). Tak jsem se rozhodl přidat sigmoid aktivační funkce takto:

σ = sigmoid

model = Chain(
  resnet[1:end-2],
  Dense(2048, 1000),  
  Dense(1000, 256),
  Dense(256, 2, σ),        # we get 2048 features out, and we have 2 classes
);

Nicméně, teď můj model pouze výstupy 1.0. Nějaké nápady, proč, nebo jestli jsem pomocí aktivace funkce špatně?

flux.jl julia
2021-11-22 20:59:14
1

Nejlepší odpověď

1

Zvažte použití aktivační funkce pro skryté vrstvy jako více lineární vrstvy (Husté vrstvy bez non-lineární aktivační funkce) jsou jen ekvivalent k jednotné lineární vrstvy. Pokud používáte kategorií, které jsou exkluzivní (pes nebo kočka, ale ne obojí), které pokrývají všechny případy (vždy to bude pes nebo kočka a nikdy např. pštros), pak pravděpodobnost, že by se suma na jednoho a softmax měla by být vhodnější pro poslední funkce. Na softmax funkce se obvykle používá s crossentropy ztráta funkce.

model = Chain(
  resnet[1:end-2],
  Dense(2048, 1000, σ),  
  Dense(1000, 256, σ),
  Dense(256, 2),
  softmax        
);

Pro lepší numerickou stabilitu a přesnost, doporučuje se nahradit crossentropy a logitcrossentropy respektive (v takovém případě softmax není to nutné).

2021-11-23 08:23:14

To dává chybu: MethodError: no method matching similar(::Float32, ::Type{Float32}) Closest candidates are: similar(!Matched::Union{LinearAlgebra.Adjoint{T, var"#s814"}, LinearAlgebra.Transpose{T, var"#s814"}} where {T, var"#s814"<:(AbstractVector{T} where T)}, ::Type{T}) where T at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/LinearAlgebra/src/adjtrans.jl
logankilpatrick

@logankilpatrick, opravdu, aktualizoval jsem svou odpověď tím, že softmax po posledním Hustou vrstvu. Funguje to teď?
Alex338207

Zdá se, že omezit hodnoty mezi 0 a 1, ale výstupní hodnoty jsou vždy stejné pro různé obrázky
logankilpatrick

@logankilpatrick jste si jisti, že ResNet model je vlastně pre-vyškoleni? To je uvedeno jako pre-vyškoleni v docs (fluxml.ai/Metalhead.jl/dev/README.html) Pokud ne, musíte trénovat všechny parametry modelu a možná i pro víc, než jen 2 epoch. Jako test, můžete také spustit plnou ResNet model s testy data.
Alex338207

To je asi otázka, zkusím vzdělávání všech vrstev.
logankilpatrick

Aktualizoval jsem model znovu trénovat všechny vrstvy, ale výsledek se zdá být stejný
logankilpatrick

Můžete najít kód pro tento zde: github.com/logankilpatrick/DeepLearningWithJulia/blob/main/src/... možná dělám něco špatně?
logankilpatrick

V jiných jazycích

Tato stránka je v jiných jazycích

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