用法
padded_batch(
batch_size, padded_shapes=None, padding_values=None, drop_remainder=False,
name=None
)
參數
-
batch_size
tf.int64
標量tf.Tensor
,表示要在單個批次中組合的此數據集的連續元素的數量。 -
padded_shapes
(可選。)tf.TensorShape
或tf.int64
向量tensor-like 對象的(嵌套)結構,表示每個輸入元素的相應組件在批處理之前應填充到的形狀。任何未知維度都將被填充到每批中該維度的最大大小。如果未設置,則將所有組件的所有尺寸填充到批次中的最大尺寸。如果任何組件具有未知等級,則必須設置padded_shapes
。 -
padding_values
(可選。)標量形tf.Tensor
的(嵌套)結構,表示用於各個組件的填充值。 None 表示應該用默認值填充(嵌套)結構。數字類型的默認值為0
,字符串類型的默認值為空字符串。padding_values
應該具有與輸入數據集相同的(嵌套)結構。如果padding_values
是單個元素並且輸入數據集有多個組件,那麽相同的padding_values
將用於填充數據集的每個組件。如果padding_values
是一個標量,那麽它的值將被廣播以匹配每個組件的形狀。 -
drop_remainder
(可選。)一個tf.bool
標量tf.Tensor
,表示在最後一批少於batch_size
元素的情況下是否應刪除它;默認行為是不丟棄較小的批次。 -
name
(可選。) tf.data 操作的名稱。
返回
-
Dataset
一個Dataset
。
拋出
-
ValueError
如果組件具有未知等級,並且未設置padded_shapes
參數。 -
TypeError
如果組件的類型不受支持。支持的類型列表記錄在https://www.tensorflow.org/guide/data#dataset_structure
將此數據集的連續元素組合成填充批次。
此轉換將輸入數據集的多個連續元素組合成一個元素。
與 tf.data.Dataset.batch
一樣,結果元素的組件將有一個額外的外部維度,即 batch_size
(如果 batch_size
不均勻地劃分輸入元素的數量 N
,則為最後一個元素的 N % batch_size
並且drop_remainder
是 False
)。如果您的程序依賴於具有相同外部尺寸的批次,則應將 drop_remainder
參數設置為 True
以防止生成較小的批次。
與 tf.data.Dataset.batch
不同,要批處理的輸入元素可能具有不同的形狀,並且此轉換會將每個組件填充到 padded_shapes
中的相應形狀。 padded_shapes
參數確定輸出元素中每個組件的每個維度的結果形狀:
- 如果尺寸是常數,則組件將在該尺寸中填充到該長度。
- 如果維度未知,組件將被填充到該維度中所有元素的最大長度。
A = (tf.data.Dataset
.range(1, 5, output_type=tf.int32)
.map(lambda x:tf.fill([x], x)))
# Pad to the smallest per-batch size that fits all elements.
B = A.padded_batch(2)
for element in B.as_numpy_iterator():
print(element)
[[1 0]
[2 2]]
[[3 3 3 0]
[4 4 4 4]]
# Pad to a fixed size.
C = A.padded_batch(2, padded_shapes=5)
for element in C.as_numpy_iterator():
print(element)
[[1 0 0 0 0]
[2 2 0 0 0]]
[[3 3 3 0 0]
[4 4 4 4 0]]
# Pad with a custom value.
D = A.padded_batch(2, padded_shapes=5, padding_values=-1)
for element in D.as_numpy_iterator():
print(element)
[[ 1 -1 -1 -1 -1]
[ 2 2 -1 -1 -1]]
[[ 3 3 3 -1 -1]
[ 4 4 4 4 -1]]
# Components of nested elements can be padded independently.
elements = [([1, 2, 3], [10]),
([4, 5], [11, 12])]
dataset = tf.data.Dataset.from_generator(
lambda:iter(elements), (tf.int32, tf.int32))
# Pad the first component of the tuple to length 4, and the second
# component to the smallest size that fits.
dataset = dataset.padded_batch(2,
padded_shapes=([4], [None]),
padding_values=(-1, 100))
list(dataset.as_numpy_iterator())
[(array([[ 1, 2, 3, -1], [ 4, 5, -1, -1]], dtype=int32),
array([[ 10, 100], [ 11, 12]], dtype=int32))]
# Pad with a single value and multiple components.
E = tf.data.Dataset.zip((A, A)).padded_batch(2, padding_values=-1)
for element in E.as_numpy_iterator():
print(element)
(array([[ 1, -1],
[ 2, 2]], dtype=int32), array([[ 1, -1],
[ 2, 2]], dtype=int32))
(array([[ 3, 3, 3, -1],
[ 4, 4, 4, 4]], dtype=int32), array([[ 3, 3, 3, -1],
[ 4, 4, 4, 4]], dtype=int32))
另請參見 tf.data.experimental.dense_to_sparse_batch
,它將可能具有不同形狀的元素組合成 tf.sparse.SparseTensor
。
相關用法
- Python tf.data.experimental.CsvDataset.prefetch用法及代碼示例
- Python tf.data.experimental.CsvDataset.window用法及代碼示例
- Python tf.data.experimental.CsvDataset.apply用法及代碼示例
- Python tf.data.experimental.CsvDataset.flat_map用法及代碼示例
- Python tf.data.experimental.CsvDataset.random用法及代碼示例
- Python tf.data.experimental.CsvDataset.cardinality用法及代碼示例
- Python tf.data.experimental.CsvDataset.interleave用法及代碼示例
- Python tf.data.experimental.CsvDataset.group_by_window用法及代碼示例
- Python tf.data.experimental.CsvDataset.as_numpy_iterator用法及代碼示例
- Python tf.data.experimental.CsvDataset.from_generator用法及代碼示例
- Python tf.data.experimental.CsvDataset.range用法及代碼示例
- Python tf.data.experimental.CsvDataset.unique用法及代碼示例
- Python tf.data.experimental.CsvDataset.shard用法及代碼示例
- Python tf.data.experimental.CsvDataset.choose_from_datasets用法及代碼示例
- Python tf.data.experimental.CsvDataset.batch用法及代碼示例
- Python tf.data.experimental.CsvDataset.enumerate用法及代碼示例
- Python tf.data.experimental.CsvDataset.from_tensors用法及代碼示例
- Python tf.data.experimental.CsvDataset.bucket_by_sequence_length用法及代碼示例
- Python tf.data.experimental.CsvDataset.concatenate用法及代碼示例
- Python tf.data.experimental.CsvDataset.unbatch用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.data.experimental.CsvDataset.padded_batch。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。