Как создать набор данных для генерации случайных изображений с помощью TensorflowPython

Программы на Python
Ответить
Anonymous
 Как создать набор данных для генерации случайных изображений с помощью Tensorflow

Сообщение Anonymous »

Я пытаюсь настроить конвейер изображений: загрузить изображения с диска в набор данных, масштабировать, генерировать исправления, обучать. Загрузка с диска происходит медленно, поэтому я хочу создать случайные данные для имитации реального изображения.
Я создал класс-генератор, который создает случайный массив чисел и преобразует его в тензор, а затем возвращает его. Затем я использую Dataset.from_generator, но получаю ошибку при попытке перебрать мои данные. Первоначально эта проблема возникла при передаче набора данных в model.fit, но я обнаружил, что могу вызвать ее раньше с помощью следующего:

Код: Выделить всё

import numpy as np
import tensorflow as tf

# batch size for dataset
full_image_batch_size = 1
batch_size = 1
image_height = 3000
image_width = 5328
image_channels = 3
tile_size = 256

class FakeImageGenerator:
def __init__(self, number_of_images):
self.generated = 0
self.number_of_images = number_of_images

def __len__(self):
return self.number_of_images

def __getitem__(self, index):
arr = np.random.rand(image_height, image_width, image_channels) * 255.0
arr = tf.convert_to_tensor(arr, dtype=tf.float32)
return (arr, )

def __call__(self):
return self.__getitem__(0)

x_image_generator = FakeImageGenerator(full_image_batch_size)

x_train = tf.data.Dataset.from_generator(
x_image_generator,
output_signature=(
tf.TensorSpec(shape=(image_height, image_width, image_channels), dtype=tf.float32),
))

for elem in iter(x_train):
print(elem)

Код: Выделить всё

W tensorflow/core/framework/op_kernel.cc:1829] INVALID_ARGUMENT: TypeError: `generator` yielded an element that did not match the expected structure. The expected structure was (tf.float32,), but the yielded element was [[[ 59.90327    5.024378 118.99237 ]...
[178.26884  200.46623   15.418176]]].
Traceback (most recent call last):
File "/root/.virtualenvs/ga-python/lib/python3.12/site-packages/tensorflow/python/data/ops/from_generator_op.py", line 204, in generator_py_func
flattened_values = nest.flatten_up_to(output_types, values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.virtualenvs/ga-python/lib/python3.12/site-packages/tensorflow/python/data/util/nest.py", line 237, in flatten_up_to
return nest_util.flatten_up_to(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.virtualenvs/ga-python/lib/python3.12/site-packages/tensorflow/python/util/nest_util.py", line 1541, in flatten_up_to
return _tf_data_flatten_up_to(shallow_tree, input_tree)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.virtualenvs/ga-python/lib/python3.12/site-packages/tensorflow/python/util/nest_util.py", line 1570, in _tf_data_flatten_up_to
_tf_data_assert_shallow_structure(shallow_tree, input_tree)
File "/root/.virtualenvs/ga-python/lib/python3.12/site-packages/tensorflow/python/util/nest_util.py", line 1414, in _tf_data_assert_shallow_structure
raise TypeError(
TypeError: If shallow structure is a sequence, input must also be a sequence. Input has type: 'EagerTensor'.
Примечание: в трассировке стека «выданный элемент был...» отображает весь массив numpy, но я включил только пару фрагментов для наглядности.

Подробнее здесь: https://stackoverflow.com/questions/792 ... tensorflow
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»