2017-02-10 22 views
6

मैं टेन्सफोर्लो के अनुमानक एपीआई के साथ सारांश बनाने के लिए प्राप्त नहीं कर सकता।टेन्सफोर्लो अनुमानक एपीआई: सारांश

अनुमानक वर्ग कई कारणों से बहुत उपयोगी है: मैंने पहले से ही अपनी कक्षाएं लागू की हैं जो वास्तव में समान हैं लेकिन मैं इसे स्विच करने की कोशिश कर रहा हूं।

import tensorflow as tf 
import tensorflow.contrib.layers as layers 
import tensorflow.contrib.learn as learn 
import numpy as np 

# To reproduce the error: docker run --rm -w /algo -v $(pwd):/algo tensorflow/tensorflow bash -c "python sample.py" 

def model_fn(x, y, mode): 
    logits = layers.fully_connected(x, 12, scope="dense-1") 
    logits = layers.fully_connected(logits, 56, scope="dense-2") 
    logits = layers.fully_connected(logits, 4, scope="dense-3") 

    loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y), name="xentropy") 

    return {"predictions":logits}, loss, tf.train.AdamOptimizer(0.001).minimize(loss) 


def input_fun(): 
    """ To be completed for a 4 classes classification problem """ 

    feature = tf.constant(np.random.rand(100,10)) 
    labels = tf.constant(np.random.random_integers(0,3, size=(100,))) 

    return feature, labels 

estimator = learn.Estimator(model_fn=model_fn,) 

trainingConfig = tf.contrib.learn.RunConfig(save_checkpoints_secs=60) 

estimator = learn.Estimator(model_fn=model_fn, model_dir="./tmp", config=trainingConfig) 

# Works 
estimator.fit(input_fn=input_fun, steps=2) 

# The following code does not work 

# Can't initialize saver 

# saver = tf.train.Saver(max_to_keep=10) # Error: No variables to save 

# The following fails because I am missing a saver... :(

hooks=[ 
     tf.train.LoggingTensorHook(["xentropy"], every_n_iter=100), 
     tf.train.CheckpointSaverHook("./tmp", save_steps=1000, checkpoint_basename='model.ckpt'), 
     tf.train.StepCounterHook(every_n_steps=100, output_dir="./tmp"), 
     tf.train.SummarySaverHook(save_steps=100, output_dir="./tmp"), 
] 

estimator.fit(input_fn=input_fun, steps=2, monitors=hooks) 

आप देख सकते हैं, मैं एक अनुमानक बनाकर उसका उपयोग लेकिन मैं फिटिंग प्रक्रिया के लिए हुक को जोड़ने के लिए प्राप्त कर सकते हैं कर सकते हैं:

यहाँ कोड नमूना है।

प्रवेश हुक बस ठीक काम करता है, लेकिन दूसरों दोनों tensors और एक जो मैं नहीं दे सकता है सेवर की आवश्यकता है।

tensors मॉडल समारोह में परिभाषित कर रहे हैं, इस प्रकार मैं उन्हें SummaryHook और सेवर को पारित नहीं कर सकते हैं आरंभ नहीं किया जा सकता है को बचाने के लिए कोई टेन्सर है क्योंकि ...

है मेरी समस्या का समाधान है? (मैं हाँ अनुमान लगा रहा हूँ लेकिन वहाँ tensorflow दस्तावेज में इस हिस्से के दस्तावेज़ीकरण की कमी है)

  • मैं अपने सेवर प्रारंभ कर सकते हैं? या मुझे अन्य वस्तुओं जैसे मचान का उपयोग करना चाहिए?
  • सारांश सारांश Hook पर मेरे मॉडल फ़ंक्शन में परिभाषित किए जाने के बाद मैं सारांश कैसे प्राप्त कर सकता हूं?

अग्रिम धन्यवाद।

पीएस: मैंने डीएनएन क्लासिफायर एपीआई देखा है लेकिन मैं कनवॉल्यूशनल नेट और अन्य के लिए अनुमानक एपीआई का उपयोग करना चाहता हूं। मुझे किसी भी अनुमानक के लिए सारांश बनाना होगा।

उत्तर

5

इच्छित उपयोग केस यह है कि आप अनुमानक को आपके लिए सारांश सहेजने दें। सारांश लेखन को कॉन्फ़िगर करने के लिए RunConfig में विकल्प हैं। 0Cपर RunConfigs पास हो जाते हैं।

+0

ठीक है मैं देखता हूं। लेकिन मैं सारांश को कैसे सहेजने के लिए परिभाषित कर सकता हूं? क्या मुझे मॉडल फ़ंक्शन में मानक स्केलर सारांश फ़ंक्शन का उपयोग करना चाहिए? – Ma2tg

+0

हां, उन्हें सारांश संग्रह में जोड़ा जाना चाहिए और स्वचालित रूप से सहेजे जाने के लिए उठाया जाना चाहिए। –

+3

@Allen Lavoie मुझे यह जानकारी tensorflow पर नहीं मिल सका क्विकस्टार्ट गाइड/अनुमानक के साथ काम करना आपको लोगों को स्पष्ट रूप से अवश्य कहना चाहिए: "अपने सारांश संग्रह में जोड़ें - यही तरीका है" – Pietrko

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