TensorFlow創(chuàng)建固定長(zhǎng)度記錄的Dataset

2018-09-20 16:10 更新

tf.contrib.data.FixedLengthRecordDataset

tf.contrib.data.FixedLengthRecordDataset 類

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

來(lái)自一個(gè)或多個(gè)二進(jìn)制文件的固定長(zhǎng)度記錄的 Dataset.

屬性

  • output_shapes
  • output_types

方法

__init__

__init__ ( 
    filenames, 
    record_bytes , 
    header_bytes = None, 
    footer_bytes = None
 )

創(chuàng)建 FixedLengthRecordDataset.

ARGS:

  • filenames:tf.string 類型的張量,包含一個(gè)或多個(gè)文件名.
  • record_bytes:tf.int64 的標(biāo)量,表示每個(gè)記錄中的字節(jié)數(shù).
  • header_bytes:(可選)tf.int64 類型的標(biāo)量,表示在文件開(kāi)頭跳過(guò)的字節(jié)數(shù).
  • footer_bytes:(可選)tf.int64 類型的標(biāo)量,表示在文件末尾要忽略的字節(jié)數(shù).

batch

batch( batch_size )

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

ARGS:

  • batch_size:一個(gè) tf.int64 類型的標(biāo)量 tf.Tensor,表示在單個(gè)批次中組合的此數(shù)據(jù)集的連續(xù)元素的數(shù)量.

返回:

返回一個(gè) Dataset.

dense_to_sparse_batch

dense_to_sparse_batch ( 
    batch_size ,
    row_shape
)

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

與 Dataset.padded_batch() 一樣,此方法將此數(shù)據(jù)集的多個(gè)連續(xù)元素 (可能具有不同的形狀) 合并到單個(gè)元素中.生成的元素有三組件 (索引、值和 dense_shape),它們包含一個(gè)tf.SparseTensor 來(lái)表示相同數(shù)據(jù)的組件.row_shape 代表在生成的 tf.SparseTensor 中每行的稠密形狀,其中有效批次的大小被前置.例如:

#注意:以下示例使用“{...}”來(lái)表示
#數(shù)據(jù)集的內(nèi)容.
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:一個(gè) tf.int64 類型的標(biāo)量 tf.Tensor,表示在單個(gè)批次中組合的此數(shù)據(jù)集的連續(xù)元素的數(shù)量.
  • row_shape:表示一個(gè) tf.TensorShape 或一個(gè) tf.int64 類型的向量張量樣的對(duì)象,表示生成的 tf.SparseTensor 中某一行的等效稠密形狀,此數(shù)據(jù)集的每個(gè)元素必須具有與 row_shape 相同的秩, 并且在每個(gè)維度中必須有小于或等于 row_shape 的大小.

返回:

返回一個(gè) Dataset.

enumerate

enumerate( start = 0 )

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

例如:

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

#“datasets”參數(shù)的嵌套結(jié)構(gòu)決定
#了結(jié)果數(shù)據(jù)集中元素的結(jié)構(gòu).
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> :一個(gè) `tf .int64` 類型的標(biāo)量 `tf.Tensor` ,代表著開(kāi)始值的枚舉.

####Returns:

  一個(gè) `Dataset` .

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

```python
filter(predicate)

根據(jù)謂詞篩選此數(shù)據(jù)集.

ARGS:

  • predicate:一個(gè)函數(shù),用來(lái)映射張量的嵌套結(jié)構(gòu)(具有自 output_shapes 和自 output_types 定義的形狀和類型)到標(biāo)量 tf.bool 張量.

返回:

返回一個(gè) Dataset.

flat_map

flat_map ( map_func )

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

ARGS:

  • map_func:一個(gè)函數(shù),用來(lái)映射張量的嵌套結(jié)構(gòu)(具有由 self.output_shapes 和 self.output_types 定義的形狀和類型)到一個(gè) Dataset.

返回:

返回一個(gè) Dataset.

from_sparse_tensor_slices

from_sparse_tensor_slices ( sparse_tensor )

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

ARGS:

  • sparse_tensor:一個(gè) tf.SparseTensor.

返回:

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

from_tensor_slices

from_tensor_slices (tensors)

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

ARGS:

  • tensors:張量的嵌套結(jié)構(gòu),在第0維度中各有相同的大小.

返回:

返回一個(gè) Dataset.

from_tensors

from_tensors (tensors)

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

ARGS:

  • tensors:張量的嵌套結(jié)構(gòu).

返回:

一個(gè) Dataset.

group_by_window

group_by_window ( 
    key_func , 
    reduce_func ,
    WINDOW_SIZE
)

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

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

ARGS:

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

返回:

返回一個(gè) Dataset.

make_dataset_resource

make_dataset_resource ()

make_initializable_iterator

make_initializable_iterator (shared_name = None)

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

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

ARGS:

  • shared_name:(可選)如果不是空的,這個(gè)迭代器將在共享相同設(shè)備的多個(gè)會(huì)話中以給定的名稱共享(例如,當(dāng)使用遠(yuǎn)程服務(wù)器時(shí)).

返回

在這個(gè)數(shù)據(jù)集的元素的一個(gè) Iterator .

make_one_shot_iterator

make_one_shot_iterator ()

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

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

返回:

在這個(gè)數(shù)據(jù)集的元素的一個(gè) Iterator .

map

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

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

ARGS:

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

返回:

一個(gè) Dataset.

padded_batch

padded_batch ( 
    batch_size , 
    padded_shapes , 
    padding_values = None
 )

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

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

ARGS:

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

返回:

一個(gè) Dataset.

range

range(* args )

創(chuàng)建一個(gè)分步分隔的值范圍的數(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 相同的語(yǔ)義,即: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]

返回:

一個(gè) RangeDataset.

注意:

  • ValueError:當(dāng) 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:一個(gè) tf.int64 類型的標(biāo)量 tf.Tensor,表示此數(shù)據(jù)集的連續(xù)元素在單個(gè)批處理中合并的數(shù)量.
  • features:字典映射功能鍵 FixedLenFeature 或 VarLenFeature 值.見(jiàn) tf.parse_example.
  • reader:可以用 filenames 張量和 (可選) reader_args 調(diào)用的函數(shù)或類, 并返回序列化示例的數(shù)據(jù)集.
  • reader_args:要傳遞給讀取器類的其他參數(shù).
  • randomize_input:輸入是否應(yīng)該是隨機(jī)的
  • num_epochs:整數(shù), 指定通過(guò)數(shù)據(jù)集讀取的次數(shù).如果沒(méi)有, 則永遠(yuǎn)循環(huán)遍歷數(shù)據(jù)集.
  • capacity:ShuffleDataset 的容量.

返回:

返回一個(gè) Dataset.

repeat

repeat( count = None )

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

ARGS:

  • count:(可選)一個(gè) tf.int64 類型的標(biāo)量 tf.Tensor,表示應(yīng)該重復(fù)此數(shù)據(jù)集的元素的次數(shù).默認(rèn)行為(如果 count 是 None 或-1)是為了無(wú)限期地重復(fù)這些元素.

返回:

返回一個(gè) Dataset.

shuffle

shuffle( 
    buffer_size , 
    seed = None
 )

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

ARGS:

  • buffer_size:一個(gè) tf.int64 類型的標(biāo)量 tf.Tensor,表示來(lái)自此數(shù)據(jù)集的元素?cái)?shù), 新數(shù)據(jù)集將從中取樣.
  • seed:(可選.)一個(gè) tf.int64 類型的標(biāo)量 tf.Tensor,表示將用于創(chuàng)建分布的隨機(jī)種子.

返回:

返回一個(gè) Dataset.

skip

skip(count)

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

ARGS:

  • count:一個(gè) tf.int64 類型的標(biāo)量 tf.Tensor,表示應(yīng)跳過(guò)的此數(shù)據(jù)集的元素?cái)?shù), 以形成新的數(shù)據(jù)集.如果 count 大于此數(shù)據(jù)集的大小, 則新數(shù)據(jù)集將不包含任何元素.如果計(jì)數(shù)為-1, 則跳過(guò)整個(gè)數(shù)據(jù)集.

返回:

返回一個(gè) Dataset.

take

take(count)

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

ARGS:

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

返回:

返回一個(gè) Dataset.

unbatch

unbatch()

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

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

返回:

返回一個(gè) Dataset.

zip

zip (datasets)

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

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

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

#“datasets”參數(shù)的嵌套結(jié)構(gòu)決定
#了結(jié)果數(shù)據(jù)集中元素的結(jié)構(gòu).
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 ))}

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

ARGS:

  • datasets:數(shù)據(jù)集的嵌套結(jié)構(gòu).

返回:

返回一個(gè) Dataset.

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)