если матрица влезает в быструю память GPU (сотни килобайт) то вычисления будут 100-1000кратно быстрее чем на процессоре, если влезает в gpu vram то в 10-100 кратно, если не влезает (используется трансфер pci-e) то в зависимости от конфига - в считанные разы быстрее.
количество весов в слое - квадрат от размерности (N*M), суммарное количество весов - линейно от количества слоев.
на сколько я знаю, реализация вычислений с матрицами на gpu уже максимально оптимизирована, и там уже идет счет на затраты энергии на хранение бит в памяти (условно единицы больше энергии требуют чем нули, при их определенном количестве gpu тротлит)
обычно перцептрон используют как классификатор, выходы это классы а значения 0 - нет, 1 - да
формально можно использовать выходные и как значения от 0 до 1 например для оценки величины, но на сколько я помню нейронные сети плохо тут работают, пример если у тебя были примеры где значения выхода 0.1 0.2 0.3... от входа например линейно, то нейронная сеть для значений между ними может подставить не линейно, т.е. ты ожидаешь 0.14, 0.15, 0.16 а нейронка выдаст 0.11, 0.12, 0.19 и будет права, значения ведь между и друг с другом так же отсортированы
-------
нейронка МОЖЕТ принимать на вход любые значения, но работать она будет хуже, так как для нормализации в этом случае она будет использовать первый скрытый слой (тебе придется делать дополнительный), т.е. ты будешь тратить дорогие ресурсы на ее обучение только чтобы провести эту нормализацию, которую тупо дешевле сделать однократно для исходных данных
-----
да, на вход нейронка может получать ЛЮБОЙ идеологически тип входа, цвет пиксела, вес, разницу двух значений (т.е. буквально производная) и т.п. весь смысл нейронных сетей что они могут внутри себя разобраться что там на входе и работать, проблема только в лишних затратах ресурсов, если данные не подготовить удобными. Не нужно даже заботиться о том что рядом стоящие значения были соседними значениями в векторе.... т.е. к примеру ты пикселы представляешь тремя числами RGB и соответственно изображение можешь представить либо как три отдельные матрицы либо одна матрица но для каждого пиксела друг за другом идут RGB числа. Нейронке абсолютно пофиг.
Но есть правило, что соседние значения в реальности должны быть соседними во входах, нельзя к примеру кодировать разные цвета номерами в input (типа красный 1, синий 2 и т.п.), классы лучше задавать весами (по весу на класс) со значением 0 и 1.
Нормализация вектора A, это когда его значения сдвигают (плюс/минус) и пропорционально (уменьшают/увеличивают кратно) таким образом, чтобы значения находились на некотором интервале, общем для всей сети, например [0..+1] или [-1..+1]. Еще там есть линейные и нелинейные методы нормализации (т.е. будут ли значения близкие к минимальным быть на том же расстоянии что и близкие например к максимальным)...
Делать это можно разными способами, например если значения у тебя гуляют от конкретных значений min/max то можно использовать сдвиг (A-min) а затем разделить на (max-min), полученное значение будет на интервале [0..1]. Напоминаю что в этом случае min/max должны быть костантой на все время существования сети, т.е. если ты добавляешь данные, и они выходят за min/max предыдущей версии выборки, то нужно переобучать (правда обычно дообучение будет простым, веса за считанные шаги скорректируются под новые значения).
Если значения гуляют от 0 до бесконечности, можно использовать 1/1+A
Сигмоида - одна из функций нормализации. Именно поэтому значение выходных векторов должны быть [-1..+1]
Смысл в том чтобы сохранить у функции значения свойство непрерывности и монотонности, плюс алгоритмы обучения нейросети работают лучше если все нормализовано.
очень и очень странно, если указать полный путь к драйверу, и указать полный путь к браузеру должно 100% работать, драйвер у тебя запускается без ошибок (выше у тебя пример) так же запускается браузер (проверь).
p.s. я продолжаю считать что главная причина - русские буквы в путях, у тебя весь питон в профиль установлен, в windows с этим большие проблемы, когда запускают портированный код и не только (половина игр не могут записать сохранения если профиль windows по русски назван)
winser, когда ты делаешь функцию async то если внутри ты вызываешь await вызов другой асинхронной функции, то текущая функция преостанавливает свою работу пока эта не завершится, соответственно делаешь рекурсию из вызовов асинхронной функции, а для 'завершения работы' делаешь специально функцию которая никогда не завершится - можно считать что произошел выход из рекурсии ;)
android sdk поставляется с qemu эмулятором для отладки android приложений, он плохо (считай никак) работает внутри любой системы виртуализации (провайдеры обычно используют qemu/hyper-v/vmware/xen).
Но если используется linux, то возможно использование паравиртуализации (до некоторых пор это было openvz/virtuozzo сейчас скорее всего некоторые еще и на базе lxc/lxd) то если провайдер этого не запрещает (модули поддержки включает он) то возможно каскадно запускать qemu/vbox. Узнать, поддерживается ли такая каскадная виртуализация можно только у саппорта.
windows паравиртуализацию не поддерживает, поэтому тут выбирать только физическое железо. Но провайдеры обычно не предоставляют такие машины в режиме облако (оплата по использованию), а значит оплачивать такие машины нужно будет скорее всего ежемесячно или даже за весь год (за год цены обычно с хорошей скидкой). Если вам действительно нужно, то максимальная производительность будет получена именно таким способом (но это заметно дорого, за несколько месяцев набежит стоимость портативного компьютера с переносным аккумулятором). linux так тоже можно запускать и это дешевле (не надо платить за лицензию), так же дешево можно попытаться найти десктопное железо, которое некоторые провайдеры стали предлагать как альтернатива.
p.s. у qemu есть режим эмуляции без поддержки аппаратной виртуализации, работает он примерно в 10 раз медленнее (особенно если он запущен внутри виртуалки). Скорее всего его можно включить и для android, но я и врагу бы не пожелал отладку приложений в таких условиях.
если матрица влезает в быструю память GPU (сотни килобайт) то вычисления будут 100-1000кратно быстрее чем на процессоре, если влезает в gpu vram то в 10-100 кратно, если не влезает (используется трансфер pci-e) то в зависимости от конфига - в считанные разы быстрее.
количество весов в слое - квадрат от размерности (N*M), суммарное количество весов - линейно от количества слоев.
на сколько я знаю, реализация вычислений с матрицами на gpu уже максимально оптимизирована, и там уже идет счет на затраты энергии на хранение бит в памяти (условно единицы больше энергии требуют чем нули, при их определенном количестве gpu тротлит)