在Keras实施自定义损失功能以实现对抗性损失?

时间:2017-03-28 01:30:25

标签: machine-learning theano keras

我想使用其他网络的预测在Keras中实现自定义丢失功能。更具体地说,我想在发生器的损失函数中使用由鉴别器生成的预测。但是,当我尝试实现这一点时,我收到以下错误:

    if len(array.shape) == 1:
TypeError: object of type 'TensorVariable' has no len()

Keras是否能够在自定义丢失函数中进行网络预测? 谢谢!

1 个答案:

答案 0 :(得分:0)

要获得张量的维数,请使用K.ndim代替K.shape,例如:

import keras.backend as K`

def myCustomLoss(x):
    if K.ndim(x) == 3:
        print("is 3")

请注意,array等值只是位于某些设备上的数据的占位符,例如您的GPU。因此len(array)之类的东西不会起作用,因为后端必须首先获取这些值,而且它不会自动执行此操作,因为这样效率很低。