Я реализую пользовательскую функцию потерь, и мой код выглядит следующим образом:
def seedloss(y_true,y_pred):
count = tf.count_nonzero(y_pred)
loss = K.log(y_pred)
logval = tf.where(tf.is_inf(loss), tf.zeros_like(loss), loss)
loss = -(K.sum(logval,axis=(1,2,3))/count)
return loss
Но я получаю сообщение об ошибке ниже
Traceback (most recent call last):
File "trainrefinenet.py", line 69, in <module>
refinenet_model.compile(optimizer = Adam(lr=lr_init), loss = seedloss, metrics = [iou_coef])
File "/home/ssindhu/deeplab_env/lib64/python3.6/site-packages/keras/engine/training.py", line 229, in compile
self.total_loss = self._prepare_total_loss(masks)
File "/home/ssindhu/deeplab_env/lib64/python3.6/site-packages/keras/engine/training.py", line 692, in _prepare_total_loss
y_true, y_pred, sample_weight=sample_weight)
File "/home/ssindhu/deeplab_env/lib64/python3.6/site-packages/keras/losses.py", line 71, in __call__
losses = self.call(y_true, y_pred)
File "/home/ssindhu/deeplab_env/lib64/python3.6/site-packages/keras/losses.py", line 132, in call
return self.fn(y_true, y_pred, **self._fn_kwargs)
File "/home/ssindhu/metrics.py", line 32, in seedloss
loss = -(K.sum(logval,axis=(1,2,3),keepdims=True)/count)
File "/home/ssindhu/deeplab_env/lib64/python3.6/site-packages/tensorflow/python/ops/math_ops.py", line 884, in binary_op_wrapper
return func(x, y, name=name)
File "/home/ssindhu/deeplab_env/lib64/python3.6/site-packages/tensorflow/python/ops/math_ops.py", line 982, in _truediv_python3
(x_dtype, y_dtype))
TypeError: x and y must have the same dtype, got tf.float32 != tf.int64
Я пытался K.cast
дляint64 но все равно я получаю ту же ошибку. Может ли кто-нибудь помочь мне понять причину этой ошибки и как решить эту проблему