Я обрабатываю CSV-файл с помощью tensorflow.Data
API. Одной из особенностей CSV является имя изображения. Чтобы загрузить изображение, мне нужно создать путь, объединяющий базовую папку с именем изображения. Однако, поскольку имя изображения является тензором, а базовая папка — строкой, я не могу соединить их с помощью os.path.join. Я включаю код ниже.
def process_csv_data(folder_path, image_dimensions):
width, height, channels = image_dimensions
def map_function(raw_data):
image_path = os.path.join(folder_path,raw_data['image_name'].numpy().decode('utf-8'))
image = tf.io.read_file(image_path)
image = tf.image.decode_jpeg(image, channels=channels)
image = tf.image.resize(image, [width, height])
image /= 255.0 # normalize to [0,1] range
return image
return map_function
Первая функция используется следующим образом:
raw_csv_dataset = tf.data.experimental.make_csv_dataset(
csv_path,
batch_size=1,
column_names=CSV_COLUMNS,
shuffle=False)
dataset = raw_csv_dataset.map(
process_csv_data(folder_path, image_dimensions, mode),
num_parallel_calls=tf.data.experimental.AUTOTUNE)
Приведенный выше код выдает эту ошибку:
AttributeError: объект «Тензор» не имеет атрибута «numpy»
Я безуспешно пробовал несколько подходов, таких как преобразование имени папки в тензор и использование tf.strings.join
или преобразование tf.string
в стандартный python string
. Итак, каким будет правильный подход?
Я использую тензорный поток 2.0.