Обработка размера пакета в пользовательском слое увеличения данных — tensorflow

#tensorflow #layer #batchsize

Вопрос:

Я реализовал этот простой слой увеличения данных, в основном он поворачивает изображения на определенный угол (я знаю, что это можно сделать с помощью ImageDataGenerator, но это просто для объяснения проблемы).

     class RandomRotation(tf.keras.layers.Layer):

        def __init__(self, rotation_range=None, **kwargs):
            super(RandomRotation, self).__init__(**kwargs)    
 

        def call(self, images, training=None, **kwargs):

            batch_size = tf.shape(images)[0]

            if training is None:
               training = K.learning_phase()

            if not training:
               return images

            angles = np.random.uniform(-0.5, 0.5, batch_size)
            images = tfa.image.rotate(images, angles)

 

Моя модель, которая включает в себя этот слой, затем обучается методом подгонки с использованием ImageDataGenerator для автоматического получения генератора. Я получаю эту ошибку, потому что значение размера пакета равно None.

Ошибка типа: ожидаемый объект последовательности с len >= 0 или одним целым числом

Ответ №1:

 tf.config.run_functions_eagerly(True)
 

так как первая строка скрипта решила проблему.