Python 调用tf.data.Dataset.map时未更新全局变量
我试图弄清楚何时应用map(在执行map之后,或者何时读取相应的数据),我设计了一个小测试。但我突然想到一件奇怪的事。我期望cnt是5,5或0,5,但我只得到1。同时,我打印了数据集中的每个元素,结果显示Python 调用tf.data.Dataset.map时未更新全局变量,python,tensorflow,Python,Tensorflow,我试图弄清楚何时应用map(在执行map之后,或者何时读取相应的数据),我设计了一个小测试。但我突然想到一件奇怪的事。我期望cnt是5,5或0,5,但我只得到1。同时,我打印了数据集中的每个元素,结果显示func应用于五个元素中的每一个,但是为什么cnt等于1,而不是5 我查过官方文件,上面写着:() 此转换将map_func应用于此数据集的每个元素,并返回一个包含转换元素的新数据集,其顺序与它们在输入中出现的顺序相同。map_func可用于更改数据集元素的值和结构 环境:tf2 cnt = 0
func
应用于五个元素中的每一个,但是为什么cnt等于1,而不是5
我查过官方文件,上面写着:()
此转换将map_func应用于此数据集的每个元素,并返回一个包含转换元素的新数据集,其顺序与它们在输入中出现的顺序相同。map_func可用于更改数据集元素的值和结构
环境:tf2
cnt = 0
def func(x):
x = x + 1
global cnt
cnt += 1
return x
b = tf.data.Dataset.from_tensor_slices(list(range(5)))
b = b.map(func)
print(cnt)
it = iter(b)
for i in range(5):
print(it.next())
print(cnt)
类似的问题也可以在这里找到:但是原始代码的打印确实工作过一次
我做错了什么
Output:
1
tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor(2, shape=(), dtype=int32)
tf.Tensor(3, shape=(), dtype=int32)
tf.Tensor(4, shape=(), dtype=int32)
tf.Tensor(5, shape=(), dtype=int32)
1