How do I perform weighted loss in multiple outputs on a same model in Tensorflow? How do I perform weighted loss in multiple outputs on a same model in Tensorflow? This means I am using a model that is intended to have 3 outputs. I did this because I would like the network to learn the relationships of the input variables. More specifically, this is multi-output regression.

The output model shape is like the following:

tf.Tensor: id=606, shape=(3, 3), dtype=float32, numpy=
array([[ 0.01483282,  2.9515972 , -0.07268244],
       [-0.8814691 ,  2.543654  ,  0.08576971],
       [-0.6933001 ,  1.3419302 , -0.25192362]], dtype=float32)


The model.summary() is below:

Layer (type)                 Output Shape              Param #   
=================================================================
simple_rnn (SimpleRNN)       (3, 32)                   1152      
_________________________________________________________________
dense (Dense)                (3, 3)                    99        
=================================================================
Total params: 1,251
Trainable params: 1,251
Non-trainable params: 0
_________________________________________________________________


The shape is (3,3) with 1st index being the batch size (the network is an RNN). I need to set weighted loss for each of the outputs. I tried the argument weighted_losses on tf.keras.models.Model but the error returned:

ValueError: When passing a list as loss_weights, it should have one entry per model output. The model has 1 outputs


What is the correct method to have weighted loss using a single model?
As I understand it, you want to have a model trained on multiple "tasks". If so, this is what it could look like:

input_data = &lt;your input sequence input&gt;
output_data = &lt;array of size (N, 3)&gt;

out1_weight, out2_weight, out3_weight = &lt;your weights for each output to adjust loss contribution&gt;

input = Input()
simple_rnn = SimpleRNN()(input)

# Define the three outputs
out1 = Dense(1)(simple_rnn)
out2 = Dense(1)(simple_rnn)
out3 = Dense(1)(simple_rnn)

model = Model(inputs=[input], outputs=[out1, out2, out3], loss_weights=[out1_weight, out2_weight, out3_weight])

model.compile(&lt;whatever params&gt;)
model.fit(input_data, [output_data[:, 0], output_data[:, 1], output_data[:, 2]])