Я создаю пользовательскую целевую функцию для моей модели tflearn. Целевая функция сложна и требует от меня повторения прогнозируемых и правильных выходов и добавления определенных частей, не основанных на индексе. Я не могу найти способ заставить его работать с тензорным типом данных.Tflearn Custom Objective function
Я закодировал версию, используя стандартные списки ниже.
errorBuild = 0
errorCheck = 0
def CustomLoss(y_pred, y_true):
for value, index in enumerate(y_true):
if y_true[index] == 0:
errorBuild += y_pred[index]
else:
errorBuild += y_pred[index] - y_true[index]
errorCheck += math.abs(errorBuild)
return errorCheck
Кажется, что нет возможности пробивать отдельные значения тензора. Должен ли я создавать новый сеанс в целевой функции и оценивать тензор?
Спасибо за помощь заранее
В идеале вы бы векторизации потери (возможно, с участием [cumsum] (https://www.tensorflow.org/api_docs/python/math_ops/scan# cumsum) и tf.abs (y_pred [1:] - y_true)). Если это невозможно, я бы посмотрел на конструкции [TensorFlow looping] (https://www.tensorflow.org/api_docs/python/functional_ops/higher_order_operators). –