Я использую tenorflow 2.0.0-бета1 и Python 3.7
Сначала рассмотрим следующий фрагмент кода, где тензор.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.]
.
Теперь рассмотрим следующий код, в котором тензор.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'
Я не могу понять, почему тензор.numpy () не работает в случае tf.data.Dataset.map ()
EDIT
Следующий параграф разъясняет мою цель:
У меня есть папка набора данных, которая содержит миллионы пар данных (изображения, временные ряды). Весь набор данных не помещается в память, поэтому я использую tf.data.Dataset.map (func). Внутри функции func () я хочу загрузить пустой файл, который содержит временные ряды, а также загрузить изображение. Для загрузки изображения в встроенном потоке есть встроенные функции, такие как tf.io.read_file и tf.image.decode_jpeg, которые принимают тензор строки. Но np.load () не принимает строковый тензор. Вот почему я хочу преобразовать тензор строки в стандартную строку Python.