Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 调用tf.data.Dataset.map时未更新全局变量_Python_Tensorflow - Fatal编程技术网

Python 调用tf.data.Dataset.map时未更新全局变量

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

我试图弄清楚何时应用map(在执行map之后,或者何时读取相应的数据),我设计了一个小测试。但我突然想到一件奇怪的事。我期望cnt是5,5或0,5,但我只得到1。同时,我打印了数据集中的每个元素,结果显示
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