擅长:python、mysql、java
<p>您可以将可选参数传递给<code>.shuffle()</code>,以防止每个历元的重新洗牌。在</p>
<p>所以,如果我有这样的数据集:</p>
<pre class="lang-py prettyprint-override"><code>def gen():
yield 1
yield 2
yield 3
ds = tf.data.Dataset.from_generator(gen, output_shapes=(), output_types=tf.int32)
</code></pre>
<p>然后做:</p>
^{pr2}$
<p>输出:</p>
<pre><code>tf.Tensor([3 2 1], shape=(3,), dtype=int32)
tf.Tensor([1 3 2], shape=(3,), dtype=int32)
tf.Tensor([2 1 3], shape=(3,), dtype=int32)
tf.Tensor([3 1 2], shape=(3,), dtype=int32)
tf.Tensor([2 3 1], shape=(3,), dtype=int32)
</code></pre>
<p>每一个纪元重新排列我的3个元素。这是我理解你想要避免的行为。在</p>
<p>相反,如果我愿意:</p>
<pre>
shuffled_and_batched = ds.shuffle(3, <b>reshuffle_each_iteration=False</b>).batch(3).repeat()
</pre>
<p>然后得到输出:</p>
<pre><code>tf.Tensor([1 3 2], shape=(3,), dtype=int32)
tf.Tensor([1 3 2], shape=(3,), dtype=int32)
tf.Tensor([1 3 2], shape=(3,), dtype=int32)
tf.Tensor([1 3 2], shape=(3,), dtype=int32)
tf.Tensor([1 3 2], shape=(3,), dtype=int32)
</code></pre>
<p>顺序洗牌一次,然后重复使用每个历元。在</p>