【发布时间】:2019-09-24 18:01:07
【问题描述】:
我使用 tf.keras 和 tf.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