2017-01-24 15 views
6

में काम करता है यह देखते हुए कि मेरे पास एक रैखिक मॉडल है क्योंकि मैं डब्ल्यू और बी के संबंध में ढाल वेक्टर प्राप्त करना चाहता हूं।कैसे tf.gradients 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) 

लेकिन अगर मैं कुछ इस तरह जहां लागत cost(x,y,w,b) की एक समारोह है कोशिश करते हैं और मैं केवल w and b के संबंध में ढ़ाल हैं:

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

मेरे प्लेसहोल्डर भी शामिल किया जाएगा (एक्स और वाई) । भले ही मुझे [x,y,w,b] के साथ ढाल मिलता है, मुझे कैसे पता चलेगा कि प्रत्येक पैरामीटर के ढाल में कौन सा तत्व है क्योंकि यह केवल नामों के बिना एक सूची है जिसके संबंध में व्युत्पन्न के पैरामीटर को लिया गया है?

इस प्रश्न में मैं इस code के हिस्सों का उपयोग कर रहा हूं और मैं this प्रश्न पर निर्माण करता हूं।

+0

यह http://stats.stackexchange.com – Sentry

+6

@ सैंट्री मैं असहमत होना चाहिए, यह यहां है। – Priyatham

+0

@Priyatham आप सही हैं, मैं बहुत जल्दी था – Sentry

उत्तर

16

tf.gradients

Constructs वाईएस w.r.t. की राशि का प्रतीक आंशिक डेरिवेटिव के लिये दस्तावेज का हवाला देते हुए xs में एक्स।

तो, यह काम करना चाहिए:

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

यहाँ, tf.gradients()cost wrt उसी क्रम में एक सूची के रूप में दूसरा तर्क प्रत्येक टेन्सर की ढाल देता है। अधिक जानकारी के लिए

tf.gradients पढ़ें।

+0

धन्यवाद एक छोटा सा उदाहरण सभी अंतर बनाता है! – user3139545

+0

लिंक अब – suku

+0

@suku https://www.tensorflow.org/api_docs/python/tf/gradients काम करता है – Bolboa