Фон
Я использую среду Anaconda в Windows 10, сделанную следующим образом этот пост Майком Мюллером:
conda create -n keras python=3.6
conda activate keras
conda install keras
В этой среде есть Python 3.6.8,Keras 2.2.4, TensorFlow 1.12.0 и NumPy 1.16.1.
Я работал над оптимизацией кода для команды, к которой я только что присоединился, когда обнаружил, что не могу даже запустить их код.Я сократил его до контрольного примера с MCVE (по крайней мере, для меня; извинения за то, что не смог привести тестируемый пример):
class TestEvaluation(unittest.TestCase):
def setUp(self):
# In-house function loads inputs and labels properly.
self.inputs, self.labels = load_data()
# Using a pretrained model, known to work.
self.model = keras.models.load_model('model_name.h5')
# Passes, and is loaded successfully.
self.assertIsNotNone(self.model)
def test_model_evaluation(self):
# Fails on my machine, reporting high loss and 0% accuracy.
scores = self.model.evaluate(self.inputs, self.labels)
accuracy = scores[1] * 100
self.assertAlmostEqual(accuracy, 93, delta=5)
Исследования
Это точноСценарий прекрасно работает с чужого компьютера, поэтому мы пришли к следующему выводу: у нас одинаковый код, модель и данные.Следовательно, это должна быть среда, верно?
Я создал больше сред Anaconda для воспроизведения номеров версий, которые работают на их компьютере.Однако это не исправило это.Более того, похоже, что это проблема, с которой сталкивались не многие другие люди, насколько я обнаружил при поиске в Интернете.
Я прошел через следующие другие среды:
- Python 3.6.4, Keras 2.2.4, TensorFlow 1.12.0, NumPy 1.16.2
- (тот, который работал для кого-то другого, хотя по общему признанию без Анаконды)
- Python 3.5.2, Keras 2.2.2, TensorFlow 1.10.0, NumPy 1.15.2
Вопрос
Модель прошла предварительную подготовку, набор проверки корректно загружен, но Keras не может сообщить ожидаемую точность ~ 93%.
Как это исправитьвопрос получения точности 0%?
Обновление
Я узнал намного больше о ситуации.Я обнаружил, что установка среды Python 3.6 в Ubuntu 18.04 привела меня к случайным угадываниям (точность ~ 25%).Таким образом, это больше не 0%!Далее я попытался скопировать машину, которая часто использовалась для тестирования, на которой была установлена Ubuntu 16.04.5.Это дало мне точность ~ 46%.Я не смог точно воспроизвести его, так как Ubuntu вынудил меня обновиться до 16.04.6, когда я установил некоторые пакеты, и я также не знаю, как они запускают вещи на машине, с которой они тестируют (я попробовал сам, и это не помогло).не работает).
Я также узнал, что парень, который скомпилировал и сохранил модель, использовал MacOS High Sierra, но он также заставляет ее работать в лабораторной среде.Мне нужно следить за этим.
Кроме того, я продолжил поиск в Интернете и нашел других с такой же проблемой:
Проблема с Keras # 7676 - открытый вопрос в течение почти 2 лет.ОП сообщил, что его сохраненная модель работает по-разному на разных машинах, что очень похоже на мою проблему.
Проблема с Keras # 4875 - Открытая проблема для свыше 2 года.Этот конкретный комментарий кажется общим решением.Я не уверен, решит ли это проблему или нет, и на самом деле у меня нет кода, который скомпилировал эту модель.Тем не менее, похоже, что многие люди находили проблемы в том, как была построена и сохранена их модель, поэтому мне, возможно, придется исследовать это подробнее ...
Я прошу прощения за утверждение решения прежде, ябыл экскотичен, чтобы увидеть, что assertNotEqual(accuracy, 0)
прошло.