【问题标题】:Loading file from path contained in tf.Tensor从 tf.Tensor 中包含的路径加载文件
【发布时间】:2019-09-24 18:01:07
【问题描述】:

我使用 tf.kerastf.data.Dataset 构建了一个简单的模型,以实现高效加载,因为数据集有几 GB 大。

图片为tiff格式,因此需要直接加载为numpy.array

我确实有一个标签和文件路径的数据集,并且想要映射一个函数以在该数据集上加载。因此,我必须以某种方式从张量中获取 python 字符串表示。

我尝试使用通常的tf.Tensor.eval(),然后将字符加入一个完整的字符串,但得到错误:ValueError: Cannot evaluate tensor using eval(): No default session is registered.,这确实有意义,因为在执行 keras 模型之前没有会话

然后我尝试将 tf.enable_eager_execution() 放在数据集文件中我的 tensorflow 导入的正下方(并从 .eval() 更改为 .numpy())但我出错了:AttributeError: 'Tensor' object has not attribute 'numpy' 提示 tf.enable_eager_execution() 不起作用

基本上我正在尝试读取包含在以下张量 a 中的字符串:

path = tf.decode_raw(path, tf.uint8)
path = ''.join(map(chr, path.eval()))  # with session
path = ''.join(map(chr, path.numpy()))  # with eager execution

image = PIL.Image.open(path)
image = numpy.array(image)

在没有其他文件的情况下在单个文件中“原型设计”时两者都可以正常工作,但在有例如我的模型在model.py 中,数据集在dataset.py 中,但两者都有tf.enable_eager_execution()

【问题讨论】:

  • 这个问题有什么新的解决方案吗?我认为当我们找到一种将字符串类型张量转换为 numpy 的方法时,这可能会得到解决。我仍然遇到这个问题...
  • 不是我这边的@krenerd。好久没用tf了,也没遇到过这样的问题。

标签: tensorflow tf.keras


【解决方案1】:


这个问题很老了,但因为它可能对某人有用,这将是我的方法:

如果您的图像是 png,您可以使用 tf.io.read_file 读取文件,然后将其转换为带有 tf.image.decode_png 的图像。还有其他几种格式可供选择。

tf_filepath 包含在张量中的 RGB 图像的路径

image = tf.io.read_file(tf_filepath)
image = tf.image.decode_png(image, channels=3, dtype=tf.uint8)

【讨论】:

  • 这可能是一个选项。感谢分享!由于我很久没有使用 tf 我无法确认。
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 2019-08-04
  • 2017-12-25
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多