У меня есть модель Keras, которая отлично тренируется на одном графическом процессоре, но когда я тренирую ее на нескольких графических процессорах, все потери проверки, возвращаемые для обучения, составляют NaN.
Я использую fit_generator и вызываю генератор валидации. Значения, возвращаемые для потерь при обучении и потерь при проверке, когда обучение на одном графическом процессоре является действительным, и моя модель сходится, но на двух или более графических процессорах потери обучения хороши и действительны, но все проверочные потери - это NaN. Является ли это проблемой, с которой кто-то сталкивался раньше, и есть ли у кого-нибудь совет, как ее решить? Я пробовал код на нескольких компьютерах, каждый из которых имел разное количество и разнообразие графических процессоров CUDA, совместимых с Keras / Tensorflow, но безрезультатно. Я могу успешно тренироваться на любом компьютере, хотя использую только один графический процессор.
model = multi_gpu_model(Model(inputs=inputs, outputs=outputs),gpus=number_of_gpus, cpu_merge=True, cpu_relocation=False)
hist = model.fit_generator(generator=training_generator,
callbacks=callbacks,
max_queue_size=max_queue_size,
steps_per_epoch=steps_per_epoch,
workers=number_of_workers,
validation_data = validation_generator,
validation_steps=validation_steps,
shuffle=False)
Я ожидал, что модель выдаст действительные потери при проверке, но вместо этого каждая потеря при проверке равна NaN, поэтому я не могу точно измерить свои тренировки на машине с несколькими графическими процессорами, что невероятно неудобно, поскольку я стремлюсь ускорить свою скорость обучения .