在TensorFlow中創(chuàng)建一個(gè)BigQueryReader

2018-08-30 10:58 更新

tf.contrib.cloud.BigQueryReader


tf.contrib.cloud.BigQueryReader 類

定義在:tensorflow/contrib/cloud/python/ops/bigquery_reader_ops.py.

一個(gè)從 BigQuery 表輸出鍵和 tf.Example 值的讀取器.

使用示例:

# Assume a BigQuery has the following schema,
# name STRING,
# age INT,
# state STRING
# Create the parse_examples list of features.
features = dict(
name=tf.FixedLenFeature([1], tf.string),
age=tf.FixedLenFeature([1], tf.int32),
state=tf.FixedLenFeature([1], dtype=tf.string, default_value="UNK"))
# Create a Reader.
reader = bigquery_reader_ops.BigQueryReader(project_id=PROJECT,
dataset_id=DATASET,
table_id=TABLE,
timestamp_millis=TIME,
num_partitions=NUM_PARTITIONS,
features=features)
# Populate a queue with the BigQuery Table partitions.
queue = tf.training.string_input_producer(reader.partitions())
# Read and parse examples.
row_id, examples_serialized = reader.read(queue)
examples = tf.parse_example(examples_serialized, features=features)
# Process the Tensors examples["name"], examples["age"], etc...

請注意,創(chuàng)建讀取器時(shí)需要快照時(shí)間戳.這將使讀者能夠查看表的一致快照.有關(guān)更多信息,請參閱 BigQuery 文檔中的 “Table Decorators”.

有關(guān)支持的方法,請參閱 ReaderBase.

屬性


  • reader_ref

實(shí)現(xiàn)讀取器的操作.

  • supports_serialize

Reader 實(shí)現(xiàn)是否可以序列化其狀態(tài).

方法


__init__

__init__ (
project_id ,
dataset_id ,
table_id ,
timestamp_millis ,
num_partitions ,
features = None ,
columns = None ,
test_end_point = None ,
name = None
)

創(chuàng)建一個(gè) BigQueryReader.

ARGS:

  • project_id:GCP 項(xiàng)目 id.
  • dataset_id:BigQuery 數(shù)據(jù)集 id.
  • table_id:BigQuery 表 id.
  • timestamp_millis:時(shí)間戳以毫秒為單位對表進(jìn)行快照.不允許使用相對 (負(fù)數(shù)或零) 快照時(shí)間.有關(guān)詳細(xì)信息, 請參閱 BigQuery 文檔中的 "Table Decorators".
  • num_partitions:要讀取的非重疊分區(qū)的數(shù)目.
  • features:parse_example 兼容字典從鍵到 VarLenFeature 和 FixedLenFeature 對象.鍵從數(shù)據(jù)庫讀取為列.
  • columns:要讀取的列的列表,當(dāng)其特性為 None 時(shí)可以被設(shè)置.
  • test_end_point:僅用于測試目的(可選).
  • name:操作的名稱(可選).

注意:

  • TypeError: 出現(xiàn)的情況:如果 feature 既不是 None 也不是 dict;如果列既不是 None 也不是列表;如果特征和列都為 None 或被設(shè)置.

num_records_produced

num_records_produced ( name = None )

返回此讀取器生成的記錄數(shù).
這與已成功讀取的執(zhí)行次數(shù)相同.

ARGS:

  • name:操作的名稱(可選).

返回:

一個(gè) int64 張量.

num_work_units_completed

num_work_units_completed ( name = None )

返回讀取器已完成處理的工作單元數(shù).

ARGS:

  • name:操作的名稱(可選).

返回:

一個(gè) int64 張量.

partitions

partitions( name = None)

返回序列化的 BigQueryTablePartition 消息.

這些消息表示大容量讀取的表的不重疊分區(qū).

ARGS:

  • name:操作的名稱(可選).

返回:

序列化 BigQueryTablePartition 消息的1維字符串張量.

read

read (
queue ,
name = None
)

返回讀取器生成的下一個(gè)記錄(鍵,值對).

如果需要,將從隊(duì)列中出現(xiàn)一個(gè)工作單元(例如,當(dāng)讀取器需要從一個(gè)新文件開始讀取,因?yàn)樗呀?jīng)完成了上一個(gè)文件).

ARGS:

  • queue:表示隊(duì)列句柄的隊(duì)列或可變的字符串張量, 帶有字符串工作項(xiàng).
  • name:操作的名稱(可選).

返回:

張量的元組(key,value). key: 一個(gè)字符串標(biāo)量張量; value: 一個(gè)字符串標(biāo)量張量.

read_up_to

read_up_to (
queue ,
num_records ,
name = None
)

返回由讀者生成的 num_records(鍵,值對).

如果需要,將從隊(duì)列中出現(xiàn)一個(gè)工作單元(例如,當(dāng) Reader 需要從新文件開始讀取,因?yàn)樗呀?jīng)完成了上一個(gè)文件).即使在最后一批之前,它也可能比 num_record 返回的少.

ARGS:

  • queue:隊(duì)列或可變的字符串張量,表示隊(duì)列的句柄,帶有字符串工作項(xiàng).
  • num_records:要讀取的記錄數(shù).
  • name:操作的名稱(可選).

返回:

張量的元組 (key,value). key: 1 維字符串張量. value: 1 維字符串張量.

reset

reset ( name = None )

將讀取器恢復(fù)到初始狀態(tài).

ARGS:

  • name:操作的名稱(可選).

返回:

創(chuàng)建的操作.

restore_state

restore_state (
state ,
name = None
)

將讀取器還原到先前保存的狀態(tài).

并非所有讀者都支持恢復(fù),所以這可能會(huì)產(chǎn)生未實(shí)現(xiàn)的錯(cuò)誤.

ARGS:

  • state:字符串張量.具有匹配類型的讀取器的 SerializeState 的結(jié)果.
  • name:操作的名稱(可選).

返回:

創(chuàng)建的操作.

serialize_state

serialize_state ( name = None )

生成用于對讀取器狀態(tài)進(jìn)行編碼的字符串張量.
并非所有的讀取器都支持序列化, 因此這可能產(chǎn)生未實(shí)現(xiàn)的錯(cuò)誤.

ARGS:

  • name:操作的名稱(可選).

返回:

返回字符串張量.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號