我正在尝试使用
from_tensor_slices
创建张量流数据集,但我传递的字符串在映射函数中变得混乱:
def test(x):
print(x)
return x
filenames=['a','b','c']
dataset = tf.data.Dataset.from_tensor_slices(filenames)
dd= dataset.map(test)
该函数打印:
Tensor("args_0:0", shape=(), dtype=string)
当我尝试时:
print(next(dd.as_numpy_iterator()))
它给出了预期的
"a"
。但我想访问函数内部的字符串,以便它可以打开文件名。这是怎么回事?
我在这里找到了类似的答案:
打印张量时的“args_0:0”
但这并不具有启发性,也不是一个最小的例子。我也想知道解决办法from_tensor_slices
我检查了 tf.executing_eagerly()
,它给出了 True。我的张量流版本是2.15.1。我宁愿不升级。
我在这里找到了类似的答案: Tensorflow Dataset 打开多个文件并将它们分开
显然map中只能使用tensorflow函数。我不应该混合原生 python 或 numpy。因此,如果我将
print(x)
替换为 tf.print(x
),我的测试功能就会起作用。