2017-01-29 34 views
5

में एक चर के फ़ंक्शन को कम करें, मैं टेन्सफोर्लो के लिए नया हूं और सोच रहा था कि टेन्सफोर्लो का उपयोग करके एक चर के फ़ंक्शन को कम करना संभव होगा या नहीं।टेन्सफोर्लो

उदाहरण के लिए, क्या हम प्रारंभिक अनुमान (x = 1 कहकर) 2 * x^2 - 5^x + 4 को कम करने के लिए टेन्सफोर्लो का उपयोग कर सकते हैं?

import tensorflow as tf 
import numpy as np 

X = tf.placeholder(tf.float32, shape =()) 
xvar = tf.Variable(np.random.randn())  
f = 2*mul(X,X) - 5*X + 4 

opt = tf.train.GradientDescentOptimizer(0.5).minimize(f) 

with tf.Session() as sess: 
    tf.global_variables_initializer().run() 
    y = sess.run(opt, feed_dict = {X : 5.0}) #initial guess = 5.0 
    print(y) 

लेकिन यह निम्न त्रुटि देता है::

मैं निम्नलिखित कोशिश कर रहा हूँ

ValueError: No gradients provided for any variable, check your graph for ops that do not support gradients, between variables 

कृपया मेरी मदद को समझने मैं गलत यहाँ क्या कर रहा हूँ।

उत्तर

11

यदि आप एक पैरामीटर को कम करना चाहते हैं तो आप निम्न कार्य कर सकते हैं (मैंने प्लेसहोल्डर का उपयोग करने से बचा है क्योंकि आप पैरामीटर को प्रशिक्षित करने की कोशिश कर रहे हैं - प्लेसहोल्डर अक्सर हाइपर-पैरामीटर और इनपुट के लिए उपयोग किए जाते हैं और उन्हें प्रशिक्षित नहीं माना जाता है पैरामीटर):

import tensorflow as tf 

x = tf.Variable(10.0, trainable=True) 
f_x = 2 * x* x - 5 *x + 4 

loss = f_x 
opt = tf.train.GradientDescentOptimizer(0.1).minimize(f_x) 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    for i in range(100): 
     print(sess.run([x,loss])) 
     sess.run(opt) 

हो जाएगा ताकि उत्पादन जोड़े (एक्स के निम्नलिखित सूची, हानि):

[10.0, 154.0] 
[6.5, 56.0] 
[4.4000001, 20.720001] 
[3.1400001, 8.0192013] 
[2.3840001, 3.4469128] 
[1.9304, 1.8008881] 
[1.65824, 1.2083197] 
[1.494944, 0.99499512] 
[1.3969663, 0.91819811] 
[1.3381798, 0.89055157] 
[1.3029079, 0.88059855] 
[1.2817447, 0.87701511] 
[1.2690468, 0.87572551] 
[1.2614281, 0.87526155] 
[1.2568569, 0.87509394] 
[1.2541142, 0.87503386] 
[1.2524685, 0.87501216] 
[1.2514811, 0.87500429] 
[1.2508886, 0.87500143] 
[1.2505331, 0.87500048] 
[1.2503198, 0.875] 
[1.2501919, 0.87500024] 
[1.2501152, 0.87499976] 
[1.2500691, 0.875] 
[1.2500415, 0.875] 
[1.2500249, 0.87500024] 
[1.2500149, 0.87500024] 
[1.2500089, 0.875] 
[1.2500054, 0.87500024] 
[1.2500032, 0.875] 
[1.2500019, 0.875] 
[1.2500012, 0.87500024] 
[1.2500007, 0.87499976] 
[1.2500005, 0.875] 
[1.2500002, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
[1.2500001, 0.87500024] 
+0

यह अच्छा है, बस एहसास है कि नुकसान समारोह अनुकूलित समारोह ही है। –

संबंधित मुद्दे