2017-01-24 60 views
6

'de tf.değişkenler nasıl çalışır? Aşağıdaki gibi bir doğrusal modelim var. Gradient vektörünü W ve b'ye göre almak istiyorum.TensorFlow

# tf Graph Input 
X = tf.placeholder("float") 
Y = tf.placeholder("float") 

# Set model weights 
W = tf.Variable(rng.randn(), name="weight") 
b = tf.Variable(rng.randn(), name="bias") 

# Construct a linear model 
pred = tf.add(tf.mul(X, W), b) 

# Mean squared error 
cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples) 

Ancak maliyet cost(x,y,w,b) bir fonksiyonudur böyle bir şey denemek ve sadece w and b göre gradyanlar istiyorsanız:

grads = tf.gradients(cost, tf.all_variable()) 

My yer tutucular da dahil edilecektir (X ve Y) .[x,y,w,b] ile bir degrade alsam bile, her parametreye ait olan, yalnızca türevin hangi parametreye ilişkin olarak alacağına ilişkin bir ad olmadığı için, her bir parametreye ait olan hangi öğeyi bildiğimi nasıl anlarım?

Bu soruda, bu code'un bölümlerini kullanıyorum ve this sorusunu yapıyorum.

+0

Bu http://stats.stackexchange.com adresine gitmeli – Sentry

+6

@Sentry I katılmıyorum, bu buraya ait. – Priyatham

+0

@Priyatham Haklısın, çok aceleci oldum – Sentry

cevap

16

ys w.r.t. toplamının tf.gradients

Yapıların sembolik kısmi türev Dokümanları teklif xs x olarak.

Yani, bu çalışması gerekir:

İşte
dc_dw, dc_db = tf.gradients(cost, [W, b]) 

, tf.gradients()cost wrt aynı sırada bir liste olarak ikinci argüman her tensör degrade döndürür.

Daha fazla bilgi için tf.gradients'u okuyun.

+0

Küçük bir örnek sayesinde tüm fark yaratıyor! – user3139545

+0

Bağlantı artık çalışmıyor – suku

+0

@suku https://www.tensorflow.org/api_docs/python/tf/gradients – Bolboa