У меня проблема с выводом fit_generator (), он выводит результат, отличный от метода fit (). У меня есть каталог, где хранятся данные пациентов. пациенты_х имеют все признаки, а пациенты_y имеют соответствующие зависимые переменные, которые я пытаюсь предсказать. Проблема в том, что когда я пытаюсь загрузить каждого пациента и выдавать партии его данных на каждой итерации (очевидно, на следующей итерации для следующего пациента), я получаю другой результат, как если бы я делал то же самое, но вместо загрузки 1 пациента на каждую итерацию я бы загружал все пациентов сразу и объединить их. Подводя итог: если я загружаю всех пациентов в память, а затем выдаю пакеты -> это выдает правильный результат, но если я загружаю каждую итерацию только 1 пациента (потому что у меня недостаточно ОЗУ для загрузки всех данных) и выдаю партии от этого пациента - -> выводит плохой результат. Я проверил, выводит ли генератор те же пакеты данных, что и делает. Пожалуйста, помогите мне, если можете.
Этот генератор выдает правильный результат. Я передаю весь набор данных
def new_gen_shuffle(batch_size, X_train, y_train):
while True:
indices = np.arange(X_train.shape[0])
np.random.shuffle(indices)
for patient_batch in range(X_train.shape[0]):
inds = indices[patient_batch * batch_size:(patient_batch + 1) * batch_size]
batch_x = X_train[inds]
batch_y = y_train[inds]
if batch_x.shape[0] > 0 and batch_y.shape[0] > 0:
yield batch_x, batch_y
но этот не работает должным образом. Я получаю партии для каждого пациента (каждая итерация для следующего пациента) Но обе они выдают одинаковые партии
def batch_generator(batch_size, patients_x, patinets_y):
while True:
for patient in range(len(patients_x)):
X_train = np.load(path + "/" + patients_x[patient])
y_train = np.load(path + "/" + patients_y[patient])
indices = np.arange(X_train.shape[0])
np.random.shuffle(indices)
for patient_batch in range(X_train.shape[0]):
inds = indices[patient_batch * batch_size:(patient_batch + 1) * batch_size]
batch_x = X_train[inds]
batch_y = y_train[inds]
if batch_x.shape[0] > 0 and batch_y.shape[0] > 0:
yield batch_x, batch_y