我正在创建一个自定义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
答案 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负数。