1 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
考慮這段代碼
import tensorflow as tf
dataset = tf.data.Dataset.range(10)
dataset1=dataset.shuffle(10, reshuffle_each_iteration=False)?
dataset2=dataset.shuffle(10, reshuffle_each_iteration=True)
ds11=dataset1.take(7)
ds12=dataset1.skip(7)
ds21=dataset2.take(7)
ds22=dataset2.skip(7)
ds22s=ds22 #.shuffle(7)
print(list(dataset2.as_numpy_iterator()))
print(list(ds11.as_numpy_iterator()))
print(list(ds12.as_numpy_iterator()))
print(list(ds21.as_numpy_iterator()))
print(list(ds22.as_numpy_iterator()))
print(list(ds22s.as_numpy_iterator()))
結(jié)果是一樣的。背后的原因是,當(dāng)你寫(xiě)的時(shí)候,ds22=dataset2.skip(7)你的意思是取前 7 個(gè)樣本,丟棄它們,然后再取一個(gè)并顯示它。因此,當(dāng)您編寫(xiě)print(list(ds22.as_numpy_iterator()))This 時(shí),會(huì)從該數(shù)據(jù)集中讀取所有剩余數(shù)據(jù)并將其作為列表返回?,F(xiàn)在,如果您進(jìn)行賦值,則意味著您擁有與 中完全相同的ds22s對(duì)象ds22。因此,通過(guò)編寫(xiě),print(list(ds22s.as_numpy_iterator()))您再次對(duì)整個(gè)數(shù)據(jù)集進(jìn)行了重新迭代,這次應(yīng)用了不同的改組。如果禁用,reshuffle_each_iteration結(jié)果將是相同的,因?yàn)樵跀?shù)據(jù)集的第二次迭代中,洗牌對(duì)齊完全相同。
添加回答
舉報(bào)