#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. @Кейт, теперь твоя проблема решена? В противном случае, можете ли вы поделиться полным автономным кодом для репликации вашей проблемы? чтобы мы могли попытаться вам помочь. Спасибо!