2017-10-03 4 views
1

私は、ある時点で訓練可能なテンソルの値を定数として取得する必要があるカスタムケラス関数(ラムダ層または損失関数用)を作成しています。ケラス - テンソルを非訓練可能なものとしてコピーする

これはvarの実験的な正規化です。私はそれを1にしたいが、それは訓練中に更新し続けるべきである。デリバティブの条件で

def normFunc(inputTrainableTensor): 

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

    return inputTrainableTensor/nonTrainableVersion 

、これはあなたがkeras backendからK.stop_gradient()方法を使用していることを行うことができますanyConstant * inputTrainableTensor

答えて

0

に相当します。この損失関数を使用して

import keras.backend as K 

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

は、モデルは訓練を維持し、最終的に0にyPredを持参し、負yPredでそれをやり続けるだろうにも関わらず、常に1全てのエポックである損失の値になります。

関連する問題