W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Iterator 類
定義在:tensorflow/contrib/data/python/ops/dataset_ops.py.
表示通過數(shù)據(jù)集進(jìn)行迭代的狀態(tài).
initializer
返回運(yùn)行一個(gè) tf.Operation 來初始化該迭代器
output_shapes
返回此迭代器元素的每個(gè)組件的形狀.
tf.TensorShape 對(duì)象的嵌套結(jié)構(gòu),對(duì)應(yīng)于該迭代器元素的每個(gè)組件.
output_types
返回此迭代器元素的每個(gè)組件的類型.
tf.DType 對(duì)象的嵌套結(jié)構(gòu),對(duì)應(yīng)于該迭代器元素的每個(gè)組件.
__init__ ( iterator_resource , initializer , output_types , output_shapes )
從給定的迭代器資源創(chuàng)建一個(gè)新的迭代器.
注意(mrry):大多數(shù)用戶不會(huì)直接調(diào)用這個(gè)初始化程序,而是使用 Iterator.from_dataset()或Dataset.make_one_shot_iterator().
dispose_op ( name = None )
返回一個(gè) tf.Operation 銷毀該迭代器.
返回的操作可用于釋放此迭代器消耗的任何資源,而不關(guān)閉會(huì)話.
返回一個(gè) tf.Operation.
from_dataset ( dataset , shared_name = None )
從給定的 Dataset 創(chuàng)建一個(gè)新的、未初始化的 Iterator.
要初始化這個(gè)迭代器,你必須運(yùn)行它的 initializer,如下所示:
dataset = ...
iterator = Iterator.from_dataset(dataset)
# ...
sess.run(iterator.initializer)
返回一個(gè) Iterator.
from_string_handle ( string_handle , output_types , output_shapes = None )
根據(jù)給定的句柄創(chuàng)建一個(gè)新的、未初始化的 Iterator .
該方法允許您定義“可饋送”的迭代器,您可以通過在 tf.Session.run 調(diào)用中提供值來在具體的迭代器之間進(jìn)行選擇.在這種情況下,string_handle 會(huì)是一個(gè) tf.placeholder,你會(huì)在每個(gè)步驟中使用 tf.contrib.data.Iterator.string_handle 的值滿足它.
例如,如果有兩個(gè)迭代器在訓(xùn)練數(shù)據(jù)集和一個(gè)測(cè)試數(shù)據(jù)集中標(biāo)記了當(dāng)前位置,則可以選擇在每個(gè)步驟中使用哪種方法,如下所示:
train_iterator = tf.contrib.data.Dataset(...).make_one_shot_iterator()
train_iterator_handle = sess.run(train_iterator.string_handle())
test_iterator = tf.contrib.data.Dataset(...).make_one_shot_iterator()
test_iterator_handle = sess.run(test_iterator.string_handle())
handle = tf.placeholder(tf.string, shape=[])
iterator = tf.contrib.data.Iterator.from_string_handle(
handle, train_iterator.output_types)
next_element = iterator.get_next()
loss = f(next_element)
train_loss = sess.run(loss, feed_dict={handle: train_iterator_handle})
test_loss = sess.run(loss, feed_dict={handle: test_iterator_handle})
返回一個(gè) Iterator.
from_structure(
output_types,
output_shapes=None,
shared_name=None
)
使用給定的結(jié)構(gòu)創(chuàng)建一個(gè)新的、未初始化的 Iterator .
此迭代器構(gòu)造方法可用于創(chuàng)建可重用多個(gè)不同數(shù)據(jù)集的迭代器.
返回的迭代器未綁定到特定的數(shù)據(jù)集,它沒有初始值設(shè)定項(xiàng).要初始化迭代器,請(qǐng)運(yùn)行 Iterator.make_initializer (dataset) 返回的操作.
以下是一個(gè)例子:
iterator = Iterator.from_structure(tf.int64, tf.TensorShape([]))
dataset_range = Dataset.range(10)
range_initializer = iterator.make_initializer(dataset_range)
dataset_evens = dataset_range.filter(lambda x: x % 2 == 0)
evens_initializer = iterator.make_initializer(dataset_evens)
# Define a model based on the iterator; in this example, the model_fn
# is expected to take scalar tf.int64 Tensors as input (see
# the definition of 'iterator' above).
prediction, loss = model_fn(iterator.get_next())
# Train for `num_epochs`, where for each epoch, we first iterate over
# dataset_range, and then iterate over dataset_evens.
for _ in range(num_epochs):
# Initialize the iterator to `dataset_range`
sess.run(range_initializer)
while True:
try:
pred, loss_val = sess.run([prediction, loss])
except tf.errors.OutOfRangeError:
break
# Initialize the iterator to `dataset_evens`
sess.run(evens_initializer)
while True:
try:
pred, loss_val = sess.run([prediction, loss])
except tf.errors.OutOfRangeError:
break
返回一個(gè) Iterator.
get_next ( name = None )
返回 tf.Tensor 的嵌套結(jié)構(gòu),包含下一個(gè)元素.
返回 tf.Tensor 對(duì)象的嵌套結(jié)構(gòu).
make_initializer (dataset)
返回一個(gè) tf.Operation 初始化此數(shù)據(jù)集的迭代器.
返回可以在給定的數(shù)據(jù)集上運(yùn)行的一個(gè) tf.Operation 以初始化該迭代器.
string_handle ( name = None )
返回一個(gè)字符串值的 tf.Tensor 來表示此迭代器.
一個(gè) tf.string 類型的標(biāo)量 tf.Tensor.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: