Otomatik farklılaştırma kullanır. Zincir kuralı kullandığında ve degradeleri atayarak grafikte geriye doğru git.
Diyelim ki bir tensörünüz C var Bu tensör C bir dizi işlemden sonra yaptı Diyelim ki, ekleyerek, çarparak, bazı doğrusal olmayanlıklardan geçerek vb.
Eğer bu C, Xk denilen bazı tensörlere bağlıysa, degradeleri almamız gerekir
Tensorflow her zaman operasyon yolunu takip eder. Düğümlerin sıralı davranışı ve aralarındaki veri akışının nasıl olduğunu kastediyorum. Bu grafik tarafından yapılır
Maliyet wrt X girişlerinin türevlerini almamız gerekiyorsa, bunun ilk yaptığı şey, grafiği genişleterek x-girişinden maliyete giden yolu yüklemektir.
Sonra nehir sırayla başlar. Sonra degradeleri zincir kuralı ile dağıtın. (Geri yayılım ile aynı)
Herhangi bir şekilde tf.gradients () 'a ait kaynak kodlarını okursanız, tensorflow'un bu degrade dağıtım bölümünü güzel bir şekilde yaptığını görebilirsiniz.
Geri izleme tf grafikle etkileşime girerken, backword geçişinde TF farklı düğümleri karşılayacaktır Bu düğümlerin içinde matmal, softmax, relu, batch_normalization vb. Olarak adlandırdığımız işlemler vardır. grafik
Bu yeni düğüm, işlemlerin kısmi türevini oluşturur. get_gradient ()
Yeni eklenen bu düğümler hakkında biraz konuşalım
Bu düğümlerin içine tf 2 şey ekliyoruz 1. Türevleri daha iyi hesapladık) 2.Ayrıca ileri geçişte ilgili opp'a girişler
Böylece zincir kuralı ile
Yani bu bir backword API'siyle aynı
Bu yüzden tensorflow otomatik farklılaşma yapmak için her zaman grafiğin sırasını düşünün
Bu nedenle, degradeleri hesaplamak için ileri geçiş değişkenlerine ihtiyacımız olduğunu bildiğimizde, ara değerleri de tensörlerde depolamamız gerekir, bu belleği azaltabilir Birçok işlem için degradelerin nasıl hesaplanacağını ve dağıtılacağını biliriz.