TensorFlow的數(shù)據(jù)集

2018-09-07 15:12 更新

tf.contrib.data.Dataset

tf.contrib.data.Dataset 類

定義在:tensorflow/contrib/data/python/ops/dataset_ops.py.

表示一組潛在的大型元素集.
數(shù)據(jù)集可用于將輸入管道表示為元素的集合 (張量的嵌套結構) 和作用于這些元素的變換的“邏輯計劃”.

屬性

output_shapes

返回此數(shù)據(jù)集元素的每個組件的形狀.

返回:

tf.TensorShape 對象的嵌套結構對應于該數(shù)據(jù)集的元素的每個組件.

output_types

返回此數(shù)據(jù)集元素的每個組件的類型.

返回:

tf.DType 對象的嵌套結構對應于該數(shù)據(jù)集的元素的每個組件.

方法

__init__

__init__ ()

batch

batch( batch_size )

將此數(shù)據(jù)集的連續(xù)元素組合成批量.

ARGS:

  • batch_size:一個 tf.int64 的標量 tf.Tensor,表示該數(shù)據(jù)集的連續(xù)元素的個數(shù),并組合成一個單批.

返回:

一個數(shù)據(jù)集.

dense_to_sparse_batch

dense_to_sparse_batch ( 
    batch_size ,
    row_shape
)

將這個數(shù)據(jù)集的不規(guī)則元素批量放入 tf.SparseTensors.

與數(shù)據(jù)集 padded_batch () 一樣, 此方法將此數(shù)據(jù)集的多個連續(xù)元素 (可能具有不同的形狀) 合并到單個元素中.生成的元素有三組件 (索引、值和 dense_shape), 其中包括一個tf.SparseTensor 表示相同數(shù)據(jù)的組件.row_shape 表示生成的 tf.SparseTensor 中每一行的稠密形狀,有效的批次尺寸是預先規(guī)定的.例如:

#注意:以下示例使用“{...}”來表示
數(shù)據(jù)集的#個內容.
a =  {  [ 'a' , 'b' , 'c' ] , [ 'a' , 'b' ] , [ 'a' , 'b' , 'c' , 'd' ]  }

a .dense_to_sparse_batch (batch_size = 2 , row_shape = [ 6 ] ) ==  { 
    ([ [ 0 , 0 ] , [ 0 , 1 ] , [ 0 , 2 ] , [ 1 , 0 ] , [ 1 , 1 ] ] , #indices
     [ 'A' ,  'b' ,  'C' , 'A' , 'B' ] ,                                  #values
     [ 2 , 6 ] ),                                                     #dense_shape 
    ([ [ 2 , 0 ] , [ 2 , 1 ] , [ 2 , 2 ] , [ 2 , 3 ] ] ,
     [ “a' , 'b' , 'C' , 'D' ] ,
     [ 1 , 6 ] )
}

ARGS:

  • batch_size:一個 tf.int64 的標量 tf.Tensor,表示在單個批次中組合的此數(shù)據(jù)集的連續(xù)元素的數(shù)量.
  • row_shape:表示一個 tf.TensorShape 或一個 tf.int64 向量張量樣的對象,表示所產生的 tf.SparseTensor 的一行的等效致密形狀.該數(shù)據(jù)集的每個元素必須具有與 row_shape 相同的秩,并且在每個維度中必須具有小于或等于 row_shape 的大小.

返回:

一個數(shù)據(jù)集.

enumerate

enumerate( start = 0 )

枚舉此數(shù)據(jù)集的元素.類似于 python 的 enumerate.

例如:

#注意:以下示例使用“{...}”來表示
#數(shù)據(jù)集的內容.
a =  {  1 , 2 , 3  } 
b =  {  (7 , 8 ), (9 , 10 ), (11 , 12 ) }

#“datasets”參數(shù)的嵌套結構決定
#了結果數(shù)據(jù)集中元素的結構.
a .enumerate(start = 5 ) ==  {  (5 , 1 ), (6 , 2 ), (7 , 3 ) } 
b .enumerate() ==  {  (0 , (7 , 8 )), (1 , (9 , 10 )), (2 , (11 , 12 )) }

#### Args:

*  < b > `start` < / b > :A `tf.int64` scalar `tf.Tensor` ,代表著開始
    值的枚舉.

#### Returns:

  A `Dataset` .

< h3 id = “filter” > < code > filter < / code > < / h3 >

```python
filter(predicate)

根據(jù)謂詞過濾此數(shù)據(jù)集.

ARGS:

  • predicate:一個函數(shù),用來映射張量的嵌套結構 (具有自 output_shapes 和自 output_types 定義的形狀和類型) 到標量 tf.bool 張量.

返回:

一個數(shù)據(jù)集.

flat_map

flat_map ( map_func )

將map_func映射到這個數(shù)據(jù)集,并拼合結果.

ARGS:

  • map_func:一種函數(shù), 用于映射張量的嵌套結構 (具有自 output_shapes 和 self output_types 定義的形狀和類型) 到數(shù)據(jù)集.

返回:

一個數(shù)據(jù)集.

from_sparse_tensor_slices

from_sparse_tensor_slices ( sparse_tensor )

在此數(shù)據(jù)集中逐行分裂每個秩為 N 的 tf.SparseTensor.

ARGS:

  • sparse_tensor:一個 tf.SparseTensor.

返回:

返回秩為 (N-1) 的稀疏張量的數(shù)據(jù)集.

from_tensor_slices

from_tensor_slices (tensors)

創(chuàng)建一個數(shù)據(jù)集,它的元素是給定張量的某部分.

ARGS:

  • tensors:張量的嵌套結構,在第0維度中各有相同的大小.

返回:

一個數(shù)據(jù)集.

from_tensors

from_tensors (tensors)

創(chuàng)建一個包含給定張量的單個元素的數(shù)據(jù)集.

ARGS:

  • tensors:張量的嵌套結構.

返回:

一個數(shù)據(jù)集.

group_by_window

group_by_window ( 
    key_func , 
    reduce_func ,
    WINDOW_SIZE
)

對此數(shù)據(jù)集執(zhí)行窗口的 “group-by” 操作.

此方法將此數(shù)據(jù)集中的每個連續(xù)元素映射到使用 key_func 的鍵, 并按鍵對元素進行分組.然后, 它將 reduce_func 應用于與同一密鑰匹配的大多數(shù) window_size 元素.每個鍵除了最后窗口外的其它窗口將包含 window_size 元素,最后的窗口可能會較小.

ARGS:

  • key_func:一個函數(shù)映射張量的嵌套結構 (具有 self. output_shapes 和 self.output_types 定義的形狀和類型) 到標量 tf.int64 張量.
  • reduce_func:一個函數(shù)將一個鍵和一個數(shù)據(jù)集映射到 batch_size 的連續(xù)元素,并將該鍵匹配到另一個數(shù)據(jù)集.
  • window_size:一個 tf.int64 標量 tf.Tensor,表示匹配同一密鑰的連續(xù)元素的數(shù)量,并將其合并到一個批處理中,將被傳遞給reduce_func.

返回:

一個數(shù)據(jù)集.

make_dataset_resource

make_dataset_resource ()

創(chuàng)建一個表示此數(shù)據(jù)集 tf.Tensor 的 tf.resource 張量.

返回:

標量 tf.Tensor 的 tf.resource 類型,這表示該數(shù)據(jù)集.

make_initializable_iterator

make_initializable_iterator (shared_name = None)

創(chuàng)建一個 Iterator 枚舉這個數(shù)據(jù)集的元素.

返回的迭代器將處于未初始化狀態(tài),您必須在使用之前運行 iterator.initializer 操作.

ARGS:

  • shared_name:(可選)如果不是空的,這個迭代器將在共享相同設備的多個會話中以給定的名稱共享(例如,當使用遠程服務器時).

返回:

此數(shù)據(jù)集的元素上的迭代器.

make_one_shot_iterator

make_one_shot_iterator ()

創(chuàng)建一個 Iterator 枚舉這個數(shù)據(jù)集的元素.

返回的迭代器將被自動初始化.“一鍵式” 迭代器目前不支持重新初始化.

返回:

此數(shù)據(jù)集的元素上的迭代器.

map

map ( 
    map_func , 
    num_threads = None , 
    output_buffer_size = None
 ) 

將 map_func 映射到這個數(shù)據(jù)集.

ARGS:

  • map_func:一個函數(shù)用來映射一個嵌套結構的張量(具有由 self.output_shapes 和 self.output_types 定義的形狀和類型)到另一個嵌套結構的張量.
  • num_threads:(可選)一個 tf.int32 標量 tf.Tensor,表示用于并行處理元素的線程數(shù).如果未指定,元素將被順序處理而不進行緩沖.
  • output_buffer_size:(可選)一個 tf.int64 標量 tf.Tensor,表示在并行處理時將被緩沖的已處理元素的最大數(shù)量.

返回:

一個數(shù)據(jù)集.

padded_batch

padded_batch ( 
    batch_size , 
    padded_shapes , 
    padding_values = None
 )

將此數(shù)據(jù)集的連續(xù)元素合并為填充的批處理.

像 Dataset.dense_to_sparse_batch() 一樣, 此方法將此數(shù)據(jù)集的多個連續(xù)元素 (可能具有不同的形狀) 合并到單個元素中.結果元素中的張量有一個額外的外部維度, 并填充到 padded_shapes 中的相應形狀.

ARGS:

  • batch_size:一個 tf.int64 標量 tf.Tensor,表示此數(shù)據(jù)集的連續(xù)元素在單個批處理中合并的數(shù)量.
  • padded_shapes:tf.TensorShape 的嵌套結構或 tf. int64 向量張量樣對象,表示每個輸入元素的各自組件在批處理之前應填充的形狀.任何未知的維度 (例如 tf.Dimension(None) 在一個 TensorShape 或-1 在一個類似張量的對象中) 將被填充到每個批次中該維度的最大維度.
  • padding_values:(可選)一個標量形狀的嵌套結構 tf.Tensor,表示要用于各個組件的填充值.對于數(shù)字類型和字符串類型的空字符串,默認值為 0.

返回:

一個數(shù)據(jù)集.

range

range(* args )

創(chuàng)建一個分步分隔的值范圍的數(shù)據(jù)集.

例如:

Dataset.range(5 ) ==  [ 0 , 1 , 2 , 3 , 4 ] 
Dataset.range(2 , 5 ) ==  [ 2 , 3 , 4 ] 
Dataset.range(1 , 5 , 2 ) ==  [ 1 , 3 ] 
Dataset.range(1 , 5 , - 2 ) ==  [ ] 
Dataset.range(5 , 1 ) ==  [ ] 
Dataset.range(5 , 1 , - 2 ) ==  [ 5 , 3 ]

ARGS:

* args:遵循與 python 的 xrange 相同的語義:len(args)== 1 - > start = 0,stop = args [0],step = 1 len(args)== 2 - > start = args [0],stop = args [1],step = 1 len (args)== 3 - > start = args [0],stop = args [1,stop = args [2]

返回:

返回一個 RangeDataset.

注意:

  • ValueError:當 len(args)== 0.

read_batch_features

read_batch_features ( 
    file_pattern , 
    batch_size , 
    features , 
    reader , 
    reader_args = None , 
    randomize_input = True , 
    num_epochs = None , 
    capacity = 10000 
)

讀取批次的示例.

ARGS:

  • file_pattern:字符串模式或帶有文件名列表的占位符.
  • batch_size:一個 tf.int64 類型的標量 tf.Tensor,表示此數(shù)據(jù)集的連續(xù)元素在單個批處理中合并的數(shù)量.
  • features:字典映射功能鍵 FixedLenFeature 或 VarLenFeature 值.見 tf.parse_example.
  • reader:可以用 filenames 張量和 (可選) reader_args 調用的函數(shù)或類, 并返回序列化示例的數(shù)據(jù)集.
  • reader_args:要傳遞給讀取器類的其他參數(shù).
  • randomize_input:輸入是否應該是隨機的.
  • num_epochs:整數(shù), 指定通過數(shù)據(jù)集讀取的次數(shù).如果沒有, 則永遠循環(huán)遍歷數(shù)據(jù)集.
  • capacity:ShuffleDataset 的容量.

返回:

一個數(shù)據(jù)集.

repeat

repeat( count = None )

重復此數(shù)據(jù)集 count 次數(shù).

ARGS:

  • count:(可選)一個 tf.int64 標量 tf.Tensor,表示應該重復此數(shù)據(jù)集的元素的次數(shù).默認行為(如果 count 是 None 或-1)是為了無限期地重復這些元素.

返回:

一個數(shù)據(jù)集.

shuffle

shuffle( 
    buffer_size , 
    seed = None
 )

隨機地打亂這個數(shù)據(jù)集的元素.

ARGS:

  • buffer_size:一個 tf.int64 標量 tf.Tensor,表示來自此數(shù)據(jù)集的元素數(shù), 新數(shù)據(jù)集將從中取樣.
  • seed:(可選.)一個tf.int64標量tf.Tensor,表示將用于創(chuàng)建分布的隨機種子.

返回:

一個數(shù)據(jù)集.

skip

skip(count)

創(chuàng)建一個從該數(shù)據(jù)集中跳過計數(shù)元素的數(shù)據(jù)集.

ARGS:

  • count:一個 tf.int64 標量 tf.Tensor,表示應跳過的此數(shù)據(jù)集的元素數(shù), 以形成新的數(shù)據(jù)集.如果 count 大于此數(shù)據(jù)集的大小, 則新數(shù)據(jù)集將不包含任何元素.如果計數(shù)為-1, 則跳過整個數(shù)據(jù)集.

返回:

一個數(shù)據(jù)集.

take

take(count)

使用此數(shù)據(jù)集中的最多計數(shù)元素創(chuàng)建 Dataset.

ARGS:

  • count:一個 tf.int64 類型的標量 tf.Tensor,表示應用于形成新數(shù)據(jù)集的此數(shù)據(jù)集的元素數(shù),如果 count 為-1, 或者如果 count 大于此數(shù)據(jù)集的大小, 則新數(shù)據(jù)集將包含此數(shù)據(jù)集的所有元素.

返回:

一個數(shù)據(jù)集.

unbatch

unbatch()

將此數(shù)據(jù)集的元素分解為連續(xù)元素的序列.

例如,如果此數(shù)據(jù)集的元素被塑造為 [B、a0、a1,...], 其中 B 可能因元素而異, 則對于此數(shù)據(jù)集中的每個元素, unbatched 數(shù)據(jù)集將包含形狀的 B 連續(xù)元素 [a0, a1,......].

返回:

一個數(shù)據(jù)集.

zip

zip (datasets)

通過將給定數(shù)據(jù)集合在一起來創(chuàng)建 Dataset .

該方法與 Python 中的內置函數(shù) zip() 具有相似的語義,主要區(qū)別在于 datasets 參數(shù)可以是 Dataset 對象的任意嵌套結構.例如:

#注意:以下示例使用“{...}”來表示
#數(shù)據(jù)集的內容.
a =  {  1 , 2 , 3  } 
b =  {  4 , 5 , 6  } 
? =  {  (7 , 8 ), (9 , 10 ), (11 , 12 ) } 
e =  {  13 , 14  }

#“datasets”參數(shù)的嵌套結構決定
#了結果數(shù)據(jù)集中元素的結構.
Dataset.zip((a, b )) ==  {  (1 , 4 ), (2 , 5 ), (3 , 6 ) } 
Dataset.zip(( b ,a)) ==  {  (4 , 1 ), (5 , 2 ), (6 , 3 ) }

#“datasets”參數(shù)可能包含任意數(shù)量的
#數(shù)據(jù)集.
Dataset.zip((a,b ,c ) ==  {(1 , 4 ,(7 ,8)),
                           (2 , 5 ,(9 ,10)),
                           (3 , 6 ,(11 ,12))}

#結果數(shù)據(jù)集中的元素數(shù)與
#數(shù)據(jù)集中最小數(shù)據(jù)集的大小相同.
Dataset.zip((a, d )) ==  {  (1 , 13 ), (2 , 14 ) }

ARGS:

  • datasets:數(shù)據(jù)集的嵌套結構.

返回:

一個數(shù)據(jù)集.


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號