Fluxo.jl modelo sempre saídas 1.0 depois de adicionar função de ativação Sigmóide

0

Pergunta

O meu problema original era que eu queria que o meu modelo, o resultado de 0-1 para que eu possa mapa de volta para o meu categórica imagens de rótulos (Fluxo.jl restringir variáveis entre 0 e 1). Então, eu decidi adicionar uma função de ativação sigmóide da seguinte forma:

σ = 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
);

No entanto, agora o meu modelo só saídas 1.0. Alguma idéia do porquê ou se eu estou usando a função de ativação de errado?

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

Melhor resposta

1

Considere a possibilidade de usar uma função de ativação para o seu camadas ocultas como linear múltipla camadas (camadas Densas sem um não-linear, função de activação) são apenas o equivalente a um único linear camada. Se você estiver usando categorias que são exclusivos (cão ou gato, mas não tanto) que cobrem todos os seus casos (ele sempre vai ser um cão ou um gato e nunca e.g. um avestruz), em seguida, as probabilidades devem somar um e um softmax deve ser o mais apropriado para a última função. O softmax função é geralmente utilizada com o crossentropy perda de função.

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

Para melhor estabilidade numérica e precisão, recomenda-se a substituição crossentropy e logitcrossentropy respectivamente (caso em que softmax não é necessário).

2021-11-23 08:23:14

Isso dá um erro: 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, de fato, eu atualizei a minha resposta colocando softmax após a última camada Densa. Ele funciona agora?
Alex338207

Parece restringir os valores entre 0 e 1, mas os valores de saída são sempre os mesmos para as diferentes imagens
logankilpatrick

@logankilpatrick tem a certeza de que o ResNet modelo é, na verdade, pré-formados? Ele é mencionado como não pré-formados no docs (fluxml.ai/Metalhead.jl/dev/README.html) Se não, você precisa treinar todos os parâmetros do modelo e, possivelmente, mais do que apenas a 2 épocas. Como um teste, você também pode executar o completo ResNet modelo com os testes de dados.
Alex338207

Que é, provavelmente, o problema, deixe-me tentar de formação de todas as camadas.
logankilpatrick

Eu atualizei o modelo para re-treinar todas as camadas, mas o resultado parece ser o mesmo
logankilpatrick

Você pode encontrar o código para este aqui: github.com/logankilpatrick/DeepLearningWithJulia/blob/main/src/... talvez eu esteja fazendo algo errado?
logankilpatrick

Em outros idiomas

Esta página está em outros idiomas

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