Search code examples
pythonmachine-learningkerasdeep-learningsigmoid

How to apply sigmoid function for each outputs in Keras?


This is part of my codes.

model = Sequential()
model.add(Dense(3, input_shape=(4,), activation='softmax'))
model.compile(Adam(lr=0.1),
          loss='categorical_crossentropy',
          metrics=['accuracy'])

with this code, it will apply softmax to all the outputs at once. So the output indicates probability among all. However, I am working on non-exclusive classifire, which means I want the outputs to have independent probability. Sorry my English is bad... But what I want to do is to apply sigmoid function to each outputs so that they will have independent probabilities.


Solution

  • You can try using Functional API to create a model with n outputs where each output is activated with sigmoid.

    You can do it like this

    in = Input(shape=(4, ))
    
    dense_1 = Dense(units=4, activation='relu')(in)
    
    out_1 = Dense(units=1, activation='sigmoid')(dense_1)
    out_2 = Dense(units=1, activation='sigmoid')(dense_1)
    out_3 = Dense(units=1, activation='sigmoid')(dense_1)
    
    model = Model(inputs=[in], outputs=[out_1, out_2, out_3])