Menghentikan perhitungan gradien.
Ketika dieksekusi dalam grafik, op ini mengeluarkan tensor inputnya apa adanya.
Saat membangun operasi untuk menghitung gradien, operasi ini mencegah kontribusi inputnya untuk diperhitungkan. Biasanya, generator gradien menambahkan operasi ke grafik untuk menghitung turunan dari 'kerugian' tertentu dengan menemukan input yang berkontribusi pada perhitungannya secara rekursif. Jika Anda memasukkan op ini ke dalam grafik, inputnya ditutupi dari generator gradien. Mereka tidak diperhitungkan untuk menghitung gradien.
Ini berguna setiap kali Anda ingin menghitung nilai dengan TensorFlow tetapi harus berpura-pura bahwa nilainya adalah konstan. Misalnya, fungsi softmax untuk vektor x dapat ditulis sebagai
def softmax(x):
numerator = tf.exp(x)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
Namun ini rentan terhadap overflow jika nilai dalam x besar. Cara alternatif yang lebih stabil adalah dengan mengurangi maksimum x dari masing-masing nilai. def stable_softmax(x):
z = x - tf.reduce_max(x)
numerator = tf.exp(z)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
Namun, ketika kami melakukan backprop melalui softmax ke x, kami tidak ingin melakukan backprop melalui perhitungan tf.reduce_max(x)
(jika nilai maks tidak unik maka gradien dapat mengalir ke input yang salah) dan perlakukan itu sebagai sebuah konstanta. Oleh karena itu, kita harus menuliskan ini sebagai def stable_softmax(x):
z = x - tf.stop_gradient(tf.reduce_max(x))
numerator = tf.exp(z)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
Beberapa contoh lain termasuk:- Algoritma EM dimana M-step tidak boleh melibatkan backpropagation melalui output dari E-step .
- Pelatihan divergensi kontrastif dari mesin Boltzmann di mana, ketika membedakan fungsi energi, pelatihan tidak boleh merambat mundur melalui grafik yang menghasilkan sampel dari model.
- Pelatihan permusuhan, di mana tidak ada backprop yang harus terjadi melalui proses pembuatan contoh permusuhan.
Metode Publik
Keluaran <T> | sebagai Keluaran () Mengembalikan pegangan simbolis dari sebuah tensor. |
statis <T> StopGradient <T> | |
Keluaran <T> | keluaran () |
Metode yang Diwarisi
Metode Publik
Output publik <T> sebagai Output ()
Mengembalikan pegangan simbolis dari sebuah tensor.
Input ke operasi TensorFlow adalah output dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.
Buat StopGradient <T> statis publik ( Cakupan lingkup, input Operand <T>)
Metode pabrik untuk membuat kelas yang membungkus operasi StopGradient baru.
Parameter
cakupan | lingkup saat ini |
---|
Kembali
- contoh baru StopGradient