मेरा मानना है कि मुझे समझने में कठिनाई हो रही है कि ग्राफ टेंसोर्फलो में कैसे काम करते हैं और उन्हें कैसे पहुंचाते हैं। मेरा अंतर्ज्ञान यह है कि 'ग्राफ़ के साथ' रेखाएं एक ही इकाई के रूप में ग्राफ बनाती हैं। इसलिए, मैंने एक कक्षा बनाने का निर्णय लिया जो तत्काल होने पर ग्राफ का निर्माण करेगा और ग्राफ के रूप में चलने वाला एक फ़ंक्शन होगा;टेन्सफोर्लो: कक्षा में एक ग्राफ बनाना और इसे चलाने के लिए ouside
class Graph(object):
#To build the graph when instantiated
def __init__(self, parameters):
self.graph = tf.Graph()
with self.graph.as_default():
...
prediction = ...
cost = ...
optimizer = ...
...
# To launch the graph
def launchG(self, inputs):
with tf.Session(graph=self.graph) as sess:
...
sess.run(optimizer, feed_dict)
loss = sess.run(cost, feed_dict)
...
return variables
अगले चरण हैं, जो मानकों को इकट्ठा करेंगे वर्ग के लिए पारित करने के लिए, ग्राफ के निर्माण के लिए और फिर इसे चलाने के लिए एक मुख्य फ़ाइल बनाने के लिए कर रहे हैं;
#Main file
...
parameters_dict = { 'n_input': 28, 'learnRate': 0.001, ... }
#Building graph
G = Graph(parameters_dict)
P = G.launchG(Input)
...
यह मेरे लिए बहुत ही सुरुचिपूर्ण है, लेकिन यह काफी काम नहीं करता है (जाहिर है)। दरअसल, ऐसा लगता है कि लॉन्च जी कार्यों में ग्राफ़ में परिभाषित नोड्स तक पहुंच नहीं है, जो मुझे त्रुटि देता है;
---> 26 sess.run(optimizer, feed_dict)
NameError: name 'optimizer' is not defined
शायद यह मेरी अजगर (और tensorflow) समझ है कि बहुत सीमित है, लेकिन मैं अजीब धारणा थी कि ग्राफ (G) बनाया के साथ, यह ग्राफ के साथ सत्र चल रहा है एक तर्क पहुँच देना चाहिए के रूप में इसमें नोड्स के लिए, मुझे स्पष्ट पहुंच देने की आवश्यकता के बिना।
कोई ज्ञान?