я честно не понимаю вопроса, а точнее твое непонимание
ты можешь ПОЛНОСТЬЮ распаковать архив, отредактировать файлы, удалить, переименовать, солздать новые, что угодно и создать НОВЫЙ архив из них, назови его как старый.
Редактирование архива это в любом случае его пересоздание (под капотом архиваторы именно это и делают)
7z умеет работать с архивами с указанной кодировкой ключ -scsКОДИРОВКА, как распаковывать так и упаковывать, соответственно распаковывай, редактируй, упаковывай
самостоятельно реализовывать эффективные вычисления на gpu не просто, сомневаюсь что тут кто то даст нормальные советы, попробуй отдельный вопрос задать, у меня мало опыта и я в основном писал универсально на opencl и тюнил гиперпараметры (количество воркеров и предварительная подготовка данных и удобное их размещение в памяти)
ты не ответил, что значит медленно? посчитай сколько у тебя получается flops, и сравни с производительностью той же реализации на cpu а так же с тем что предлагают реализация torch.
10-50х быстрее чем на cpu при тупой реализации в лоб и там и там - это нормально.
если матрица влезает в быструю память 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 по русски назван)
ты можешь ПОЛНОСТЬЮ распаковать архив, отредактировать файлы, удалить, переименовать, солздать новые, что угодно и создать НОВЫЙ архив из них, назови его как старый.
Редактирование архива это в любом случае его пересоздание (под капотом архиваторы именно это и делают)