[英]constrained optimization, adding an additional term in a custom loss function in a NN
我正在努力為我的損失 function (Keras,tensorflow)添加額外的約束
我原來的損失 function 是:
self.__loss_fn = tf.reduce_mean(
tf.square( self.__psiNNy
- tf.matmul(self.__psiNNx, self.__K) )
附加約束與強加統一性(KT K=1)有關。 所以,我的新損失 function 看起來像
self.__loss_fn = tf.reduce_mean(
tf.square( self.__psiNNy
- tf.matmul(self.__psiNNx, self.__K) ) )
+ tf.multiply(alpha, tf.matmul(tf.transpose(self.__K),self.__K)-1))
其中 alpha 代表懲罰系數。
運行代碼,而不是為損失提供奇異值。 它給出了一個數組:
Epoch - 0 Loss - [[-0.3633499 -1.2530719 -1.29390422 ... -0.90075779 -0.81838405
-0.94197399]
[-1.2530719 14.31707269 14.78048348 ... -5.04269215 -5.24336678
-0.27613182]
[-1.29390422 14.78048348 15.89136624 ... -5.83845412 -6.28395005
-0.08354599]
...
[-0.90075779 -5.04269215 -5.83845412 ... 1.25852317 0.25653466
-0.60421091]
[-0.81838405 -5.24336678 -6.28395005 ... 0.25653466 5.08378911
-4.45022781]
[-0.94197399 -0.27613182 -0.08354599 ... -0.60421091 -4.45022781
2.03832155]] LR - 0.0001 Time - 1.472019910812378
我希望你能幫忙
酉矩陣應該乘以單位矩陣,而不是乘以一。 此外,您在矩陣空間中,因此您需要一個范數來表示“到單位矩陣的距離”。
換句話說
loss(K) = 1/N || K'K - I ||^2
tf.reduce_mean(tf.square( tf.matmul(tf.transpose(self.__K),self.__K) - tf.eye(N) ))
其中N
是K
的大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.