Ich habe einen Verlust Wert / Funktion, und ich möchte alle zweiten Ableitungen in Bezug auf einen Tensor f (der Größe n) berechnen. Ich habe es geschafft, tf.gradients zweimal zu verwenden, aber wenn ich es zum zweiten Mal anwende, summiert es die Ableitungen über die erste Eingabe (siehe second_derivatives in meinem Code).
Ich habe es auch geschafft, die Hesse-Matrix zu erhalten, aber ich möchte nur ihre Diagonale berechnen, um zusätzliche Berechnungen zu vermeiden.
%Vor%Mein Gedanke war, dass tf.gradients (first_derivatives, f [0, 0]) [0] funktionieren würde, um zum Beispiel die zweite Ableitung in Bezug auf f_0 zu erhalten, aber es scheint, dass Tensorflow nicht funktioniert. t erlauben, von einer Scheibe eines Tensors abzuleiten.
tf.gradients([f1,f2,f3],...)
berechnet Steigung von f=f1+f2+f3
Auch das Unterscheiden in Bezug auf x[0]
ist problematisch, weil x[0]
sich auf einen neuen Slice
-Knoten bezieht, der kein Vorfahre Ihres Verlustes ist, also wird es in Bezug auf diesen Verlust None
sein. Du könntest es umgehen, indem du pack
benutzt um x[0], x[1], ...
zusammen in xx
zu kleben und dein Verlust hängt von xx
anstatt x
ab. Eine Alternative besteht darin, getrennte Variablen für einzelne Komponenten zu verwenden, in welchem Fall das Berechnen von Hessian in etwa so aussehen würde.
Sie werden sehen
%Vor%Tags und Links python tensorflow