Не удается получить воспроизводимые результаты с помощью ImageDataGenerator в керасе

#tensorflow #keras #tf.keras

Вопрос:

Я пытаюсь получить воспроизводимые результаты между несколькими запусками одного и того же сценария в keras, но на каждой итерации я получаю разные результаты. Мой код выглядит так:

 import numpy as np
from numpy.random import seed
import random as rn
import os

seed_num = 1
os.environ['TF_CUDNN_DETERMINISTIC'] = '1'
os.environ['PYTHONHASHSEED'] = '1'
os.environ['TF_DETERMINISTIC_OPS'] = '1'
np.random.seed(seed_num)
rn.seed(seed_num)

import tensorflow as tf
tf.random.set_seed(seed_num)

import tensorflow.keras as ks
from tensorflow.python.keras import backend as K

...some imports...
from tensorflow.keras.preprocessing.image import ImageDataGenerator


.... data loading etc ....

generator = ImageDataGenerator(
                width_shift_range=0.1,
                height_shift_range=0.1,
                horizontal_flip=True)
                      
generator.fit(X_train, seed=seed_num)                
my_model.fit(generator.flow(X_train, y_train, batch_size=batch_size, shuffle=False, seed=seed_num), validation_data=(X_val, y_val), callbacks=callbacks , epochs=epochs, shuffle=False)
 

Я определил, что проблема заключается в ImageDataGenerator, т. Е. При установке generator = ImageDataGenerator() без какого-либо увеличения результаты воспроизводимы. Я также работаю на процессоре, а версия tensrflow-2.4.1. Чего мне здесь не хватает?

Комментарии:

1. Причина, по которой это невозможно воспроизвести, заключается в том, что дополнения в ImageDataGenerator случайным образом применяются к каждому изображению

2. @theastronomist значит, нет способа сделать их воспроизводимыми? Я имею в виду, не должны ли случайные увеличения быть детерминированными, если случайное начальное значение фиксировано?

3. @Кейт, теперь твоя проблема решена? В противном случае, можете ли вы поделиться полным автономным кодом для репликации вашей проблемы? чтобы мы могли попытаться вам помочь. Спасибо!