【问题标题】:Implementing custom loss function in Keras for adversial loss?在 Keras 中实现自定义损失函数以应对逆向损失?
【发布时间】:2017-08-20 21:53:32
【问题描述】:
我想使用另一个网络的预测在 Keras 中实现自定义损失函数。更具体地说,我想在生成器的损失函数中使用鉴别器生成的预测。但是,当我尝试执行此操作时,出现以下错误:
if len(array.shape) == 1:
TypeError: object of type 'TensorVariable' has no len()
Keras 是否能够在自定义损失函数中进行网络预测?
谢谢!
【问题讨论】:
标签:
machine-learning
theano
keras
【解决方案1】:
要获取张量的维数,请使用K.ndim 而不是K.shape,例如:
import keras.backend as K`
def myCustomLoss(x):
if K.ndim(x) == 3:
print("is 3")
请注意,诸如array 之类的值只是位于某些 设备(例如您的GPU)上的数据的占位符。因此,像len(array) 这样的东西将不起作用,因为后端必须首先获取这些值,并且它不会自动执行此操作,因为那样效率低下。