2017-06-18 134 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,你会得到不同的批次。