Нейронные сети для распознавания изображений могут быть действительно большими. Могут быть тысячи входов/скрытых нейронов, миллионы соединений, которые могут занимать много компьютерных ресурсов.высокая точность нейронной сети для распознавания изображений, поплавка или двойная?
В то время как float является обычно 32bit и double 64bit в C++, они не имеют большой разницы в скорости в скорости, но использование поплавков может сэкономить некоторую память.
Имея нейронную сеть, что использует sigmoid в качестве функции активации , если мы могли бы выбрать из которых переменных в нейронной сети может быть плавающей или двойной , которые могут быть поплавком, чтобы сохранить память без нейронная сеть не может выполнять?
В то время как входы и выходы для данных обучения/тестирования определенно может быть поплавков , потому что они не требуют двойной точности, так как цвета в изображении могут быть только в диапазоне 0-255 и когда нормализуется масштаб 0.0-1.0, стоимость единицы будет быть 1/255 = 0,0039 ~
1. насчет скрытых нейронов выходной точности, было бы безопасно, чтобы сделать их плавать тоже?
вывод скрытого нейрона получает его значение из суммы вывода нейронного слоя предыдущего уровня * его вес соединения к расчетному нейрону, а затем сумма передается в функцию активации (в настоящее время сигмовидная) для получения нового выхода. Сама переменная Sum может быть двойной, поскольку она может стать действительно большим числом при большой сети.
2. насчет веса соединения, они могут быть поплавки?
В то время как входы и выходы нейрона находятся в диапазоне 0-1.0 из-за сигмоида, весам разрешено быть больше.
Stochastic gradient descentbackpropagation страдает на vanishing gradient problem из-за производной активации функции, я решил не ставить на это как вопрос о том, что точность должна градиент переменной быть, ощущение того, что поплавок просто не будет достаточно точным, особенно когда сеть глубокая.
Спасибо! Это действительно повысило мою уверенность в использовании поплавков. Я прочитал статью о точности данных в 16 бит, но, продолжая идти дальше в google, большинство ответов на вопросы немного смутили меня. Статья: https: //arxiv.org/pdf/1502.02551.pdf Один из них: http://scicomp.stackexchange.com/questions/21402/are-there-tasks-in-machine-learning-which- require-double-precision-floating-poin О нормализации ввода, Обновлен основной пост, Спасибо! О GPUPU, поддержка новых GPU, двойной от NVIDIA CUDA быть один: https://developer.nvidia.com/cuda-faq Он единственный, кого я имею работу с –
Кроме того, если вы используете CPU, векторный процессор SSE/AVX/NEON обычно может обрабатывать в два раза больше значений «float32». – MSalters