Я работаю над проблемой регрессии.Мой CNN тренируется на данных, которые имеют форму 32x513x30 - 32 экземпляров 513x30 на партию, а затем 4810 партий.
У меня есть эти партиисохраняются в каталоге, каждый с именем «batch # number.npy».
При использовании генератора Python я получаю предупреждение от TensorFlow:
ПРЕДУПРЕЖДЕНИЕ: tenorflow: Использованиегенератор с use_multiprocessing=True
и несколькими работниками может дублировать ваши данные.Пожалуйста, рассмотрите возможность использования класса keras.utils.Sequence
.
Я выяснил, как загрузить их с помощью генератора Python.Тем не менее, при использовании многопроцессорной обработки рекомендуется использовать класс последовательностей Keras: https://www.tensorflow.org/api_docs/python/tf/keras/utils/Sequence
К сожалению, здесь все становится слишком сложно для меня.Вот код, который я использовал:
def batch_gen(num):
os.chdir('mydirectory/train')
for n in num:
placeholder = np.load('batch#' + str(n) + '.npy')
X = placeholder[:,:513,:]
Y1= placeholder[:,513:,:]
Y = X * Y1
X = X / normalization # normalize X
X = scale_mag*X.astype(np.float32)
Y = Y / normalization
Y = scale_mag*Y.astype(np.float32)
X = np.reshape(X,(32,513,30,1))
Y = np.reshape(Y,(32,513,30,1))
yield (X, Y)
my_gen = batch_gen(C) # C is an array with indexes 1 to 4810 (looped by number of training epochs)
Способ, которым я использую генератор, заставляет мои данные дублироваться во время тренировки?Если так, как я мог бы перевести его в класс Sequence?
Спасибо.