Я пишу довольно сложную программу машинного обучения для моей диссертации в компьютерном видении. Он работает достаточно хорошо, но мне нужно постоянно проверять новые возможности и добавлять новые функции. Это проблематично, потому что иногда я добавляю ошибки, когда расширяю код или пытаюсь упростить алгоритм.
Очевидно, что правильная вещь - добавить модульные тесты, но не ясно, как это сделать. Многие компоненты моей программы дают несколько субъективный ответ, и я не могу автоматизировать проверки работоспособности.
Например, у меня был некоторый код, который аппроксимировал кривую кривой с низким разрешением, чтобы я мог выполнять интенсивно вычислительную работу на кривой с низким разрешением. Я случайно ввел ошибку в этот код и нашел его только через кропотливый поиск, когда результаты моей всей программы немного ухудшились.
Но когда я попытался написать для него единичный тест, было неясно, что мне следует делать. Если я сделаю простую кривую, которая имеет явно правильную версию с низким разрешением, тогда я не проверю все, что может пойти не так. Если я делаю простую кривую, а затем слегка возмущаю точки, мой код начинает давать разные ответы, хотя этот фрагмент кода действительно работает нормально.