首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个很大的BigQuery表中读取小批的最佳方法?

从一个很大的BigQuery表中读取小批的最佳方法?
EN

Stack Overflow用户
提问于 2020-01-29 01:38:58
回答 2查看 297关注 0票数 1

我有一个大的(>200M行) BigQuery表,我想从这个表中阅读迷你批次,这样我就可以训练一个机器学习模型了。数据集太大,无法容纳到内存中,因此我无法同时读取所有数据,但我希望我的模型能够从所有数据中学习。我还想避免由于网络延迟而发出太多的查询,因为这会减慢培训过程。用Python做这件事最好的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-29 05:15:32

如果使用TF,那么Felipe的答案是有效的,但是如果您使用pytorch或者想要对您的培训平台更加不可知论的东西,那么faucetml可以很好地工作:

从文档中的示例来看,如果您正在训练两个时代:

代码语言:javascript
复制
fml = get_client(
    datastore="bigquery",
    credential_path="bq_creds.json",
    table_name="my_training_table",
    ds="2020-01-20",
    epochs=2,
    batch_size=1024
    chunk_size=1024 * 10000,
    test_split_percent=20,
)
for epoch in range(2):
    fml.prep_for_epoch()
    batch = fml.get_batch()
    while batch is not None:
        train(batch)
        batch = fml.get_batch()
票数 3
EN

Stack Overflow用户

发布于 2020-01-29 02:38:28

你在用Tensorflow吗?

tfio.bigquery.BigQueryClient 0.9.0解决了这个问题:

代码语言:javascript
复制
read_session(
    parent,
    project_id,
    table_id,
    dataset_id,
    selected_fields,
    output_types=None,
    row_restriction='',
    requested_streams=1
)

使用

requested_streams

的初始流数。如果未设置或0,我们将提供流的值,以便产生合理的吞吐量。肯定是非阴性的。流的数量可能低于请求的数量,这取决于表的并行性和系统允许的最大并行量。

源代码:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59959473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档