Hello,

How does one create and use a custom loss function with a decision forest model, such as Random forest, in the tensorflow decision forest (tfdf) library?

The example below given in the documentation seems to be for neural nets, and it is not clear how to modify it to work with tfdf models:

============

class MyModel(tf.keras.Model):

def **init**(self, *args, **kwargs):

super(MyModel, self).**init**(*args, **kwargs)

self.loss_tracker = tf.keras.metrics.Mean(name=‘loss’)

def compute_loss(self, x, y, y_pred, sample_weight):

loss = tf.reduce_mean(tf.math.squared_difference(y_pred, y))

loss += tf.add_n(self.losses)

self.loss_tracker.update_state(loss)

return loss

def reset_metrics(self):

self.loss_tracker.reset_states()

@property

def metrics(self):

return [self.loss_tracker]

tensors = tf.random.uniform((10, 10)), tf.random.uniform((10,))

dataset = tf.data.Dataset.from_tensor_slices(tensors).repeat().batch(1)

inputs = tf.keras.layers.Input(shape=(10,), name=‘my_input’)

outputs = tf.keras.layers.Dense(10)(inputs)

model = MyModel(inputs, outputs)

model.add_loss(tf.reduce_sum(outputs))

optimizer = tf.keras.optimizers.SGD()

model.compile(optimizer, loss=‘mse’, steps_per_execution=10)

model.fit(dataset, epochs=2, steps_per_epoch=10)

print('My custom loss: ', model.loss_tracker.result().numpy())

==========