Tensorflow 属性错误:';张量';对象没有属性';numpy';使用版本2.4.1启用即时执行
我一直在尝试将我构建的生成器转换为tf.data.dataset。 我已经走了很长的路,现在我有了这样简单的事情Tensorflow 属性错误:';张量';对象没有属性';numpy';使用版本2.4.1启用即时执行,tensorflow,keras,tensorflow-datasets,tf.data.dataset,Tensorflow,Keras,Tensorflow Datasets,Tf.data.dataset,我一直在尝试将我构建的生成器转换为tf.data.dataset。 我已经走了很长的路,现在我有了这样简单的事情 def parse_image(filename): file = tf.io.read_file(filename) # this will work only with filename as tensor image = tf.image.decode_image(file) return image def transform_img(img):
def parse_image(filename):
file = tf.io.read_file(filename) # this will work only with filename as tensor
image = tf.image.decode_image(file)
return image
def transform_img(img):
img = parse_image(img).numpy()
img = transforms_train(image = img)["image"]
return img
当我在文件名本身上调用transform img时,它会按预期工作。比如:
plt.imshow(transform_img(array_of_filenames[0]))
但当我把它映射到数据集时
dataset = tf.data.Dataset.from_tensor_slices(array_of_filenames)
dataset = dataset.map(transform_img)
我得到了标题中的错误
我又在做傻事了,不是吗?
谢谢你的帮助 无法在tensorflow数据集的映射函数中使用numpy。否则,您需要将函数包装在
tf.py_函数
或tf.numpy_函数
中。因此,它应该如下所示:
dataset=dataset.map(lambda:item:tf.py_函数(transform_img,[item],[tf.float32]))
py_函数的第一个参数是您想要的预处理函数,第二个参数是要传递给函数的参数。最后一个参数是返回预处理函数的数据类型。(同样适用于tf.numpy\u函数
)
我不记得在文档中读过这篇文章,但在教程中,您可以找到它。谢谢,这确实是解决方案,我在这里也找到了,很高兴我能提供帮助:)