#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 шагов