which keras output layer loss function to use in the following scenario?

I would recommend having 3 outputs to the network. Since the data can affect the 3 “sub-labels”, the network only branches apart on the classification layer. If you want, you can add more layers to each specific branch.

I’m assuming that each “sub-label” is binary classification, so that’s why I chose sigmoid (returns value from 0 to 1, so larger number means network thinks it’s class 1 over class 0)

To do this, you would have to change to the Functional API like this:

from keras.layers import Input, Dense
from keras.models import Model

visible = Input(shape=(scaled_train_samples[0].shape))
model = Dense(16, input_shape = activation='relu')(visible)
model = Dense(32,activation='relu')(model)
model = Dense(16,activation='relu')(model)
out1 = Dense(units=1,activation='sigmoid',name='OUT1')(model)
out2 = Dense(units=1,activation='sigmoid',name='OUT2')(model)
out3 = Dense(units=1,activation='sigmoid',name='OUT3')(model)

finalModel = Model(inputs=visible outputs=[out1, out2, out3])

optimizer = Adam(learning_rate=.0001)
losses = {
    'OUT1': 'binary_crossentropy',
    'OUT2': 'binary_crossentropy',
    'OUT3': 'binary_crossentropy',
model.compile(optimizer=optimizer, loss=losses, metrics={'OUT1':'accuracy', 'OUT2':'accuracy', 'OUT3':'accuracy'})

CLICK HERE to find out more related problems solutions.

Leave a Comment

Your email address will not be published.

Scroll to Top