2017-07-07 67 views
1

我正在學習如何從文檔中使用tensorflow。但是,我不明白以下兩個功能。我試過搜索文檔,但是我無法得到明確的答案。以張量流讀取數據

input_fn = tf.contrib.learn.io.numpy_input_fn({"x":x_train}, y_train, 
              batch_size=4, 
              num_epochs=1000) 
eval_input_fn = tf.contrib.learn.io.numpy_input_fn(
    {"x":x_eval}, y_eval, batch_size=4, num_epochs=1000) 

另外,如果你能解釋函數中的參數是什麼會很好。提前致謝!

回答

0

我同意documentation沒有很好地解釋這些值。

第一個參數是網絡輸入值的字典。

第二個是輸出值。

的batch_size是一次訓練網絡所採取的項目數,當你有大量的數據,如果你訓練每個價值網絡訓練太慢,所以你使用的批次,因此,如果x_train有16個項目,批量大小爲4,網絡將接受前4個,後4個訓練,直到所有16個輸入都被使用。

num_epochs是退出嘗試優化網絡節點之前的前向和後向遍數。

對於批量大小和時代數量,您可以根據您想要花費多少時間來進行訓練與性能表現有多好來調整這些參數。

有關terms的很好的描述。

取自an example,然後可以使用input_fn來獲取要傳遞的特徵和目標值以運行該數據。

例如:

with self.test_session() as session: 
    input_fn = numpy_io.numpy_input_fn({"x":x_train}, y_train, 
             batch_size=4, 
             num_epochs=1000) 
    features, target = input_fn() 

    res = session.run([features, target]) 

兩個功能做同樣的事情,只是input_fn是培養網絡和eval_input_fn將是評價,所以唯一的區別是x和y值,因爲當您評估訓練數據的性能時,性能將會是上限或最好的情況。

+0

謝謝!另外,你能解釋一下函數本身的功能嗎? –

+0

當然,我會編輯答案。 – gmwagner