AttributeError: у объекта tennsflow.python.framework.ops.EagerTensor нет атрибута decode - PullRequest
0 голосов
/ 19 июня 2019

Я использую tenorflow на python 3.7, Ubuntu 16.04. Код, который выдает вышеупомянутую ошибку, написан ниже. Он основан на следующем коде . Я получаю эту ошибку как на tenorflow 1.13, так и на 2.0.0-бета1

У меня есть папка набора данных, содержащая миллионы пар данных в форме (изображение, временные ряды). Временная серия представлена ​​в формате numpy. Я хочу использовать функцию np.load () для загрузки данных. Но имя файла в формате строки тензора. Проблема в том, что np.load () не принимает тензор потока.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 = train_dataset.map(
lambda image_file, timeseries_file: tuple(tf.py_function(
    load, [image_file, timeseries_file], [tf.float32, tf.float32])))
for x in train_dataset.take(1):
    print(x)
...