2017-06-18 170 views
0

我是tensorflow的新手。我的數據庫中有大量數據,我想要一種方法來訓練數據上的張量流模型。我明白如何將數據寫入csv文件然後從csv讀取數據。 但我該如何直接從數據庫中做到這一點。我可以從我的腳本(python)連接到數據庫並運行SQL查詢來檢索數據,但是如果我想要批量學習或使用時代並混合數據?此外,數據太大,無法一次保存在內存中。 從哪裏開始的任何提示? 謝謝tensorflow從數據庫讀取數據

+0

是否有阻止您多次查詢數據庫的內容?爲什麼不能在你的情況下運行具有任何大小限制的select語句,然後從返回的行創建minibatches?然後,一旦你在每一行上運行SGD步驟,運行另一個查詢並創建更多的minibatches。也許我錯過了你遇到的困難。 –

回答

0

讓我們再次重申這個問題:

  • 也不可能將所有的數據加載到內存中(即使數據被修剪所有不需要的元數據)
  • 是不可能(技術或政策原因)首先查詢數據庫,然後將結果作爲csv文件保存到磁盤,然後使用csv文件。

如果我們可以實現上述任何一個,那麼我們不會有問題。我們堅持以某種方式查詢數據庫,我們希望:

  • 得到短小塊

好數據,這是很容易做到!假設我們的數據庫有一個數字主鍵。簡單地決定你有多少塊要在數據和使用功能,像模

# for 7 batches 
key % 7 == 0 gets you the first batch 
key % 7 == 1 gets you the second batch 
... etc 

好了,你要添加另一個需求

  • 得到隨機短小的塊數據

好吧,那並不難。我們只是改變挑2個隨機數X(最好是素數)和Y(小於批次的數量)和做同樣的事情,但像這樣

# for 7 batches 
(key * X + Y) % 7 == 0 gets you the first batch 
(key * X + Y) % 7 == 1 gets you the second batch 
... etc 

你不必素得心應手的名單?沒問題,just get a whole bunch並隨機挑選一個。

對於下一個時代使用不同的X和Y,你會得到不同的批次。