关于张量流数据集的等号并没有真正为变量分配值

问题描述

使用tensorflow数据集操作时,我发现了一些有趣的东西。让我先向您展示代码:

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()))

输出:

[3,0,7,9,8,5,4,1,6,2]

[2,0,4,8,8,5,6]

[1,9,7]

[2,6,8,0,7,3,9]

[2,8,5]

[1、0、2]

因此,问题在于最后两个打印结果应具有相同的元素(当然顺序不相同);但是,正如您所看到的,事实并非如此。

我的猜测是 ds22 并没有真正分配,而是我们定义了如何获取它的操作,因此当我们使用它时,所需的数据可以由数据库自动生成。定义的操作。

或者,有人可以解释吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)