我正在使用 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))
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常并输出[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)
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了以下错误 AttributeError: 'Tensor' object has no attribute 'numpy'
我无法弄清楚为什么 tensor.numpy() 在 tf.data.Dataset.map() 的情况下不起作用
编辑
以下段落阐明了我的目的:
我有一个数据集文件夹,其中包含数百万个数据对(图像、时间序列)。整个数据集不适合内存,所以我使用 tf.data.Dataset.map(func)。在 func() 函数中,我想加载一个包含时间序列的 numpy 文件并加载图像。为了加载图像,tensorflow 中有内置函数,如 …
我在 python 3.7、Ubuntu 16.04 上使用 tensorflow。抛出上述错误的代码写在下面。它基于以下代码。我在 tensorflow 1.13 和 2.0.0-beta1 上都收到此错误
我有一个数据集文件夹,其中包含数百万个形式(图像、时间序列)的数据对。时间序列采用 numpy 格式。我想使用 np.load() 函数来加载数据。但是文件名是字符串张量格式。问题是 np.load() 不接受 tensorflow.python.framework.ops.EagerTensor
import tensorflow as tf
import numpy as np
import imageio
#tf.enable_eager_execution() # use this line if using tensorflow 1.13
imageio.imwrite('data.jpg', np.random.rand(256,256,3))
np.save('data.npy',np.ones(1024))
def load(image_file,timeseries_file):
image = tf.io.read_file(image_file)
image = tf.image.decode_jpeg(image)
timeseries = np.load(timeseries_file.decode())
timeseries = tf.convert_to_tensor(timeseries, np.float32)
image = tf.cast(image, tf.float32)
timeseries = tf.cast(timeseries, tf.float32)
return image, timeseries
image_files = ['data.jpg']
timeseries_files = ['data.npy']
train_dataset = tf.data.Dataset.from_tensor_slices((image_files, timeseries_files))
train_dataset …Run Code Online (Sandbox Code Playgroud)