Flujo.jl modelo siempre salidas 1.0 después de añadir la función de activación Sigmoide

0

Pregunta

Mi problema original era que yo quería mi modelo a la salida 0-1 para que yo pueda mapa de nuevo a mi categórico etiquetas de las imágenes (de Flujo.jl restringir las variables entre 0 y 1). Así que he decidido añadir una función de activación sigmoide de la siguiente manera:

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

Sin embargo, ahora mi modelo solo salidas 1.0. Alguna idea de por qué o si estoy utilizando la función de activación mal?

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

Mejor respuesta

1

Considere la posibilidad de utilizar una función de activación para sus capas ocultas como lineal múltiple capas (capas Densas sin una no-lineal de la función de activación) son equivalentes a una sola lineal de la capa. Si usted está utilizando categorías que son exclusivos (perro o gato, pero no tanto) que cubren todos los casos (siempre será un perro o un gato y nunca, por ejemplo, un avestruz), a continuación, las probabilidades deben sumar uno y una softmax debe ser la más apropiada para la última función. El softmax la función se utiliza generalmente con el crossentropy función de pérdida.

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

Para una mejor numérico de la estabilidad y la precisión, se recomienda reemplazar crossentropy y por logitcrossentropy respectivamente (en cuyo caso softmax no es necesario).

2021-11-23 08:23:14

Esto da un error: 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 hecho, he actualizado mi respuesta poniendo softmax después de la última capa Densa. Funciona ahora?
Alex338207

Parece restringir los valores entre 0 y 1, pero los valores de salida son siempre los mismos para diferentes imágenes
logankilpatrick

@logankilpatrick ¿estás seguro de que el ResNet modelo es en realidad pre-entrenamiento? Es mencionado como no pre-entrenados en el docs (fluxml.ai/Metalhead.jl/dev/README.html) Si no, usted necesita para capacitar a todos los parámetros del modelo y, posiblemente, más que sólo 2 de todas las épocas. Como una prueba, también puede ejecutar el pleno ResNet modelo con sus pruebas de datos.
Alex338207

Que es probablemente el tema, voy a tratar de la formación de todas las capas.
logankilpatrick

He actualizado el modelo para re-entrenar todas las capas, pero el resultado parece ser el mismo
logankilpatrick

Usted puede encontrar el código para esta aquí: github.com/logankilpatrick/DeepLearningWithJulia/blob/main/src/... tal vez estoy haciendo algo mal?
logankilpatrick

En otros idiomas

Esta página está en otros idiomas

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