【发布时间】:2019-11-02 02:05:35
【问题描述】:
我正在使用 tensorflow 2.0.0-beta1 和 python 3.7
首先考虑以下 tensor.numpy() 正常工作的代码:
import tensorflow as tf
import numpy as np
np.save('data.npy',np.ones(1024))
def func(mystr):
return np.load(mystr.numpy())
mystring = tf.constant('data.npy')
print(func(mystring))
以上代码运行正常,输出[1. 1. 1. ... 1. 1. 1.]。
现在考虑以下代码,其中 tensor.numpy() 不起作用。
import tensorflow as tf
import numpy as np
np.save('data.npy',np.ones(1024))
def func(mystr):
return np.load(mystr.numpy())
mystring = tf.constant('data.npy')
data = tf.data.Dataset.from_tensor_slices([mystring])
data.map(func,1)
上面的代码给出了以下错误AttributeError: 'Tensor' object has no attribute 'numpy'
我无法弄清楚为什么 tensor.numpy() 在 tf.data.Dataset.map() 的情况下不起作用
编辑
以下段落阐明了我的目的:
我有一个包含数百万数据对(图像、时间序列)的数据集文件夹。整个数据集不适合内存,所以我使用 tf.data.Dataset.map(func)。在 func() 函数中,我想加载一个包含时间序列的 numpy 文件以及加载图像。为了加载图像,张量流中有内置函数,例如 tf.io.read_file 和 tf.image.decode_jpeg 接受字符串张量。但是 np.load() 不接受字符串张量。这就是为什么我想将字符串张量转换为标准的 python 字符串。
【问题讨论】:
-
你为什么在
func中使用 numpy ?你想达到什么目的? -
我已经稍微编辑了我的问题以明确我的目的。我有一个数据集文件夹,其中包含数百万个数据对(图像、时间序列)。整个数据集不适合内存,所以我使用 tf.data.Dataset.map(func)。在 func() 函数中,我想加载一个包含时间序列的 numpy 文件以及加载图像。为了加载图像,张量流中有内置函数,如
tf.io.read_file和tf.image.decode_jpeg接受字符串张量。但是 np.load() 不接受字符串张量。这就是为什么我想将字符串张量转换为标准的 python 字符串。
标签: python numpy tensorflow tensorflow-datasets