Keras - 将张量复制为不可训练的

时间:2017-10-03 14:33:01

标签: tensorflow keras

我正在创建一个自定义keras函数(用于lambda图层或损失函数),在某些时候需要将可训练张量的值作为常量。

用于var的实验归一化。我希望它是1,但它应该在训练期间不断更新。

def normFunc(inputTrainableTensor):

    #I want this function - here in pseudocode:
    nonTrainableVersion = K.make_a_non_trainable_copy(inputTrainableTensor)

    return inputTrainableTensor / nonTrainableVersion

就衍生物而言,这相当于anyConstant * inputTrainableTensor

1 个答案:

答案 0 :(得分:0)

您可以使用keras backend中的K.stop_gradient()方法执行此操作。

import keras.backend as K

def customLoss(yTrue,yPred):
    return yPred / K.stop_gradient(yPred)

使用此损失函数将导致每个时期的损失值始终为1,即使模型将继续训练并最终使yPred为0并继续使用yPred负数。