Значительно более низкая точность и потери между версиями TensorFlow (2.1.0 и 2.4.0)

#python #performance #tensorflow #keras #version

#python #Производительность #tensorflow #keras #версия

Вопрос:

Я проверял, будет ли моя реализация DenseNet-121 работать на GPU (RTX 2060) в Ubuntu, но когда она успешно запустилась, я заметил, что потери и точность значительно хуже, чем производительность, установленная на CPU с другим компьютером.

Я использовал идентичные коды для модели и подготовки данных, идентичный набор данных и идентичные параметры обучения.

Единственное отличие состояло в том, что удовлетворительная версия процессора macOS работала на TensorFlow версии 2.1.0, тогда как версия Ubuntu GPU работала на TensorFlow версии 2.4.0.

Чтобы выделить единственное заметное различие, я перешел на версию macOS и обновил TensorFlow до версии 2.4.0, и теперь я записываю те же существенно худшие результаты, что и на другом устройстве.

Версия TensorFlow 2.1.0 после 1 эпохи:

593/593 [==============================] - 733s 1s/sample - loss: 0.3325 - accuracy: 0.8650

Версия TensorFlow 2.4.0 после 1 эпохи:

38/38 [==============================] - 823s 21s/step - loss: 0.3732 - accuracy: 0.3920

* Наиболее заметной здесь является разница в точности на 0,473 для идентичного процесса между новыми версиями 2.4.0 и 2.1.0.

Кто-нибудь знает, почему может возникнуть эта проблема? Является ли самым простым решением для этого просто вернуться к последней версии TensorFlow с удовлетворительными результатами?

Заранее благодарю вас!

Ответ №1:

Я заметил, что в одном случае у вас есть 593 шага за эпоху, тогда как в другом у вас есть только 38 шагов за эпоху. Если размеры пакета одинаковы в обоих случаях, то всего за 38 шагов вы не обрабатываете все свои обучающие выборки. На самом деле вы обрабатываете только 3800/593 = 6,4 процента выборок. Это, конечно, приведет к разным результатам в точности.

Комментарии:

1. Я думал, что это тоже могло быть проблемой, но кажется, что 2.1.0 перечисляет в образцах (отдельные точки данных), тогда как 2.4.0 перечисляет в пакетах. Мой размер пакета составляет 16. 593 выборки / 16 размер пакета = 37.0625 шагов (отсюда 38 шагов в версии 2.4.0).

2. Я работаю на 2.1, и он перечисляет этапы пакетов так же, как и 2.4. Я подозреваю, что вы установили batch_size=1 в версии 2.1, что затем потребовало 593 шагов