StopGradient

StopGradient kelas akhir publik

Menghentikan perhitungan gradien.

Saat dijalankan dalam grafik, operasi ini menampilkan tensor masukannya apa adanya.

Saat membangun operasi untuk menghitung gradien, operasi ini mencegah kontribusi masukannya diperhitungkan. Biasanya, generator gradien menambahkan operasi ke grafik untuk menghitung turunan dari 'kerugian' tertentu dengan mencari masukan yang berkontribusi pada penghitungannya secara rekursif. Jika Anda memasukkan operasi ini ke dalam grafik, inputnya akan disembunyikan dari generator gradien. Mereka tidak diperhitungkan untuk menghitung gradien.

Ini berguna kapan pun Anda ingin menghitung nilai dengan TensorFlow tetapi harus berpura-pura bahwa nilainya adalah sebuah konstanta. 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 hal ini rentan meluap jika nilai dalam x besar. Cara alternatif yang lebih stabil adalah dengan mengurangi x maksimum 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 kita melakukan backprop melalui softmax ke x, kita tidak ingin melakukan backprop melalui perhitungan tf.reduce_max(x) (jika nilai max tidak unik maka gradien dapat mengalir ke input yang salah) dan memperlakukannya sebagai konstanta. Oleh karena itu, kita harus menuliskannya 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 lainnya meliputi:
  • Algoritma EM dimana M-step tidak boleh melibatkan backpropagation melalui output dari E-step .
  • Pelatihan divergensi kontrastif pada mesin Boltzmann dimana, ketika membedakan fungsi energi, pelatihan tidak boleh melakukan propagasi mundur melalui grafik yang menghasilkan sampel dari model.
  • Pelatihan permusuhan, di mana tidak ada backprop yang terjadi melalui proses pembuatan contoh permusuhan.

Metode Publik

Keluaran <T>
sebagai Keluaran ()
Mengembalikan pegangan simbolik tensor.
statis <T> StopGradien <T>
buat ( Lingkup lingkup , masukan Operan <T>)
Metode pabrik untuk membuat kelas yang membungkus operasi StopGradient baru.
Keluaran <T>

Metode Warisan

Metode Publik

Keluaran publik <T> sebagai Keluaran ()

Mengembalikan pegangan simbolik tensor.

Masukan ke operasi TensorFlow adalah keluaran dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.

public static StopGradient <T> buat ( Lingkup lingkup, masukan Operan <T>)

Metode pabrik untuk membuat kelas yang membungkus operasi StopGradient baru.

Parameter
cakupan ruang lingkup saat ini
Kembali
  • contoh baru StopGradient

Keluaran publik <T> keluaran ()