Задать вопрос
  • Многослойный перцептрон - как выполнить действия?

    @rPman
    самостоятельно реализовывать эффективные вычисления на gpu не просто, сомневаюсь что тут кто то даст нормальные советы, попробуй отдельный вопрос задать, у меня мало опыта и я в основном писал универсально на opencl и тюнил гиперпараметры (количество воркеров и предварительная подготовка данных и удобное их размещение в памяти)

    ты не ответил, что значит медленно? посчитай сколько у тебя получается flops, и сравни с производительностью той же реализации на cpu а так же с тем что предлагают реализация torch.

    10-50х быстрее чем на cpu при тупой реализации в лоб и там и там - это нормально.
  • Многослойный перцептрон - как выполнить действия?

    @rPman
    iamserge, что значит медленно работает?

    если матрица влезает в быструю память GPU (сотни килобайт) то вычисления будут 100-1000кратно быстрее чем на процессоре, если влезает в gpu vram то в 10-100 кратно, если не влезает (используется трансфер pci-e) то в зависимости от конфига - в считанные разы быстрее.

    количество весов в слое - квадрат от размерности (N*M), суммарное количество весов - линейно от количества слоев.

    на сколько я знаю, реализация вычислений с матрицами на gpu уже максимально оптимизирована, и там уже идет счет на затраты энергии на хранение бит в памяти (условно единицы больше энергии требуют чем нули, при их определенном количестве gpu тротлит)
  • Многослойный перцептрон - как выполнить действия?

    @rPman
    обычно перцептрон используют как классификатор, выходы это классы а значения 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.
  • После передачи файлов по сети портятся контрольные суммы?

    @rPman
    это может быть банально разгон, памяти процессора и т.п.
  • Многослойный перцептрон - как выполнить действия?

    @rPman
    Нормализация вектора A, это когда его значения сдвигают (плюс/минус) и пропорционально (уменьшают/увеличивают кратно) таким образом, чтобы значения находились на некотором интервале, общем для всей сети, например [0..+1] или [-1..+1]. Еще там есть линейные и нелинейные методы нормализации (т.е. будут ли значения близкие к минимальным быть на том же расстоянии что и близкие например к максимальным)...

    Делать это можно разными способами, например если значения у тебя гуляют от конкретных значений min/max то можно использовать сдвиг (A-min) а затем разделить на (max-min), полученное значение будет на интервале [0..1]. Напоминаю что в этом случае min/max должны быть костантой на все время существования сети, т.е. если ты добавляешь данные, и они выходят за min/max предыдущей версии выборки, то нужно переобучать (правда обычно дообучение будет простым, веса за считанные шаги скорректируются под новые значения).

    Если значения гуляют от 0 до бесконечности, можно использовать 1/1+A

    Сигмоида - одна из функций нормализации. Именно поэтому значение выходных векторов должны быть [-1..+1]

    Смысл в том чтобы сохранить у функции значения свойство непрерывности и монотонности, плюс алгоритмы обучения нейросети работают лучше если все нормализовано.
  • Selenium не видит мой webdriver,что делать?

    @rPman
    SyntaxWarning: invalid escape sequence '\P'

    повторяю
    в python нужно дублировать \ в строках
    либо добавь R перед первой " чтобы строки стали raw
  • Selenium не видит мой webdriver,что делать?

    @rPman
    очень и очень странно, если указать полный путь к драйверу, и указать полный путь к браузеру должно 100% работать, драйвер у тебя запускается без ошибок (выше у тебя пример) так же запускается браузер (проверь).

    p.s. я продолжаю считать что главная причина - русские буквы в путях, у тебя весь питон в профиль установлен, в windows с этим большие проблемы, когда запускают портированный код и не только (половина игр не могут записать сохранения если профиль windows по русски назван)
  • Selenium не видит мой webdriver,что делать?

    @rPman
    перечитай мой комент я дописал

    у тебя проблема не с selenium а с установкой, ты и браузер поставил куда то в жопу мира, и пути указываешь через задницу
  • Selenium не видит мой webdriver,что делать?

    @rPman
    в python нужно дублировать \ в строках
    options.setBinary("D:\Python_vscode\selenium\chrome-win64\chrome.exe")

    тебя самого это не смущает, что слеши в пути обратные? это должно работать но некрасиво, сделай однообразно
    service = "./chrome-win64/chrome.exe"

    либо добавь R перед первой " чтобы строки стали raw

    и напиши для обоих полный путь чтобы уж с гарантией
  • Selenium не видит мой webdriver,что делать?

    @rPman
    добавь
    options.setBinary("полный путь до chrome.exe");
  • Selenium не видит мой webdriver,что делать?

    @rPman
    в документации к chromedriver пишут что версии должны совпадать (хз до какого уровня, но явно первое число должно совпадать)
  • Selenium не видит мой webdriver,что делать?

    @rPman
    ну вот версия 114.0.5735.90 теперь смотри версию google chrome в его меню
  • Как узнать сумму выброщенных чисел из массива?

    @rPman
    muminwww, может нужно было лучше условие задачи говорить? мы же тут догадываемся что у тебя за задача

    ну отсортируй массив добавив array_sort или лучше достаточно найти максимальный элемент - $n=max($foo)
  • Selenium не видит мой webdriver,что делать?

    @rPman
    да у становить chromium благодаря гугл правильно сложно, особенно в windows
    используй google chrome
  • Selenium не видит мой webdriver,что делать?

    @rPman
    еще покажи версию драйвера
    chromedriver.exe --version
  • Selenium не видит мой webdriver,что делать?

    @rPman
    а chromium или google chrome совместимый браузер у тебя установлен на компьютере?
  • Selenium не видит мой webdriver,что делать?

    @rPman
    я туплю у тебя же service=service

    а значение service = "./chromedriver.exe" путь в линуксовом стиле, у тебя windows, у бери ./ из пути либо напиши полный путь
  • Selenium не видит мой webdriver,что делать?

    @rPman
    если что у тебя там все равно по коду пакеты с русскоязычного пути используются, но это возможно уже не причина.

    Добавь executable_path="путь до cromedriver.exe" в
    driver = webdriver.Chrome(options=options, service=service, executable_path="путь до cromedriver.exe")
  • Как выйти из функции js которая вызывает саму себя?

    @rPman
    winser, когда ты делаешь функцию async то если внутри ты вызываешь await вызов другой асинхронной функции, то текущая функция преостанавливает свою работу пока эта не завершится, соответственно делаешь рекурсию из вызовов асинхронной функции, а для 'завершения работы' делаешь специально функцию которая никогда не завершится - можно считать что произошел выход из рекурсии ;)
  • Где можно создать виртуальную машину чтобы использовать андроид студио на ней?

    @rPman
    android sdk поставляется с qemu эмулятором для отладки android приложений, он плохо (считай никак) работает внутри любой системы виртуализации (провайдеры обычно используют qemu/hyper-v/vmware/xen).

    Но если используется linux, то возможно использование паравиртуализации (до некоторых пор это было openvz/virtuozzo сейчас скорее всего некоторые еще и на базе lxc/lxd) то если провайдер этого не запрещает (модули поддержки включает он) то возможно каскадно запускать qemu/vbox. Узнать, поддерживается ли такая каскадная виртуализация можно только у саппорта.

    windows паравиртуализацию не поддерживает, поэтому тут выбирать только физическое железо. Но провайдеры обычно не предоставляют такие машины в режиме облако (оплата по использованию), а значит оплачивать такие машины нужно будет скорее всего ежемесячно или даже за весь год (за год цены обычно с хорошей скидкой). Если вам действительно нужно, то максимальная производительность будет получена именно таким способом (но это заметно дорого, за несколько месяцев набежит стоимость портативного компьютера с переносным аккумулятором). linux так тоже можно запускать и это дешевле (не надо платить за лицензию), так же дешево можно попытаться найти десктопное железо, которое некоторые провайдеры стали предлагать как альтернатива.

    p.s. у qemu есть режим эмуляции без поддержки аппаратной виртуализации, работает он примерно в 10 раз медленнее (особенно если он запущен внутри виртуалки). Скорее всего его можно включить и для android, но я и врагу бы не пожелал отладку приложений в таких условиях.