В качестве выходных данных у меня есть 1-D массив из 5 элементов, в модели это выглядит так:
out_vector = Dense(out_count, activation='relu', name='out_vector')(network_layer_3)
, где out_count
равно 5 (не то, чтобы это действительно имело значение). Когда я сравниваю его с true_out_vector
, другим 5-мерным массивом, я хочу, чтобы потеря была «максимумом абсолютных разностей элементов».
Простой пример того, что я имею в виду:
v1 = [94, 1000, 50, 85, 23]
v2 = [100, 430, 88, 12, 90]
Я хочу, чтобы мои потери равнялись самой большой абсолютной разнице, которая, очевидно, равна |1000 - 430| = 570
, поскольку элемент 2 имеет эту самую большую разницу. У меня проблемы с тем, чтобы это произошло в Керасе. Вот что я попробовал:
def customLoss(yTrue,yPred):
return K.maximum(K.abs(yTrue - yPred))
Но я получаю ошибку:
File "C:\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", line 609, in ndim
dims = x.get_shape()._dims
AttributeError: 'int' object has no attribute 'get_shape'
Я уверен, что должен быть простой способ сделать то, что я собираюсь. Заранее благодарю за любую помощь.