我有一个包含 5 个元素的一维数组作为我的输出,它在模型中看起来像这样:
out_vector = Dense(out_count, activation='relu', name='out_vector')(network_layer_3)
哪里out_count
是 5(并不是真的很重要)。当我将它与true_out_vector
另一个 5D 数组进行比较时,我希望损失是“元素绝对差异的最大值”。
我的意思是简单的例子:
v1 = [94, 1000, 50, 85, 23]
v2 = [100, 430, 88, 12, 90]
我希望我的损失等于最大的绝对差异,这很|1000 - 430| = 570
明显,因为元素 2 具有最大的差异。我在 Keras 中无法实现这一点。这是我尝试过的:
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'
我相信应该有一种简单的方法来做我想要做的事情。
这个怎么样:
from keras import backend as K
v1 = K.constant([94, 1000, 50, 85, 23])
v2 = K.constant([100, 430, 88, 12, 90])
def customLoss(yTrue, yPred):
return K.max(K.abs(yTrue - yPred))
result = customLoss(v1, v2)
sess = K.get_session()
print(sess.run(result))
输出是:
570.0
注意:K.maximum
当您只传递一个张量时,该方法需要两个张量
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句