Я написал вариационный автокодировщик в Keras, используя Tensorflow в качестве бэкэнда. В качестве оптимизатора я использую Adam со скоростью обучения 1e-4 и размером пакета 16. Когда я тренирую сеть на процессоре Macbook (Intel Core i7), значение потерь после одной эпохи (~ 5000 мини-пакетов) в 2 раза меньше. чем после первой эпохи на другой машине под управлением Ubuntu. Для другой машины я получаю тот же результат как на CPU, так и на GPU (Intel Xeon E5-1630 и Nvidia GeForce GTX 1080). Python и библиотеки, которые я использую, имеют одинаковый номер версии. Обе машины используют 32-битные числа с плавающей запятой. Если я использую другой оптимизатор (например, rmsprop), значительная разница между машинами все равно сохраняется. Я устанавливаю np.random.seed, чтобы исключить случайность.
Моя сеть выводит логиты (у меня линейная активация в выходном слое), а функция потерь равна tf.nn.sigmoid_cross_entropy_with_logits
. Вдобавок к этому один слой имеет регуляризатор (расхождение KL между его активацией, которые являются параметрами гауссова распределения, и гауссовым нулевым средним).
Что могло быть причиной большой разницы в стоимости убытков?