Ответы пользователя по тегу Python
  • Обязательны ли заголовки в http?

    @SolidMinus
    Обязательны, это спецификация протокола. Прикол лишь в том, что достаточно обычно просто HTTP/1.1 200 OK при ответе
    Ответ написан
    Комментировать
  • Как сделать чтобы если число было не целое, выдавало -1 в ответ?

    @SolidMinus
    Ты сравниваешь некоторое число с типом, тебя ничего не смущает?

    def get_row_len(row, col, cell_index):
        A = (cell_index / row) - col
        if round(A) != A:
            return -1
    Ответ написан
    Комментировать
  • Почему в массив объектов добавляется только последний объект созданный в цикле?

    @SolidMinus
    Может ответ и не по теме, но так нифига не делаются дела. Надеюсь, ты перепишешь этот ужас))

    Я, конечно, когда давно интересовался нейронными сетями, но было лень читать кучу статей тоже думал, что надо создавать класс для отдельного нейрона, но, блин, какой же это бред,

    1) Берешь, ставишь numpy

    Задать матрицу весов можно таким образом:

    weights_1 = np.random.randn(input_num, hidden_neurons)
    b1 = np.random.randn(hidden_neurons)
    weights_hidden = np.random.randn(hidden_neurons, output_n)
    b2 = np.random.randn(output_n)


    Где input_num - количество входных нейронов, hidden_neurons - скрытых нейронов.

    Тогда ты имеешь матрицу где для каждого нейрона задаешь вектор весов его связей. Например, если входных нейронов - 10, а скрытых - 64, то матрица размера 10x64

    Тогда получить выходной вектор со скрытого слоя можно очень просто

    hidden_out = np.dot(X, weights_1) + b1

    И таким же образом на выходной

    >>> output = np.dot(hidden_out, weights_hidden) + b2 # где получаем выходное значение, в данном примере output_n = 1
    >>> output.shape
    (1,)
    >>> output
    array([ 199.52290173])


    Получили значение на выходном нейроне. Теперь надо это дело обучать.

    Надеюсь, понятно объяснил как правильно задавать нейронные сети?)

    В примере я не юзал функции активации, но они делаются также просто. Просто допиши к вычислениям каждого аутпута функцию активации, например, relu-активацию

    hidden_out = np.max(0, np.dot(X, weights_1) + b1)

    Забудь, пожалуйста, про ту жесть что ты написал. Без обид, сам таким был)
    Ответ написан
  • Python. Requests как исправить проблему с авторизацией?

    @SolidMinus
    В заголовок добавь User-agent одного из браузеров. Мне помогало. Очень часто такое определение работает тупо по тому какой браузер у юзера.

    sess = requests.Session()
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0"}
    response = sess.post(url, ..., headers=headers)
    Ответ написан
  • Кто проходил курс обучения от learn.python.ru? Как вам?

    @SolidMinus
    Так не пойдет. Начни изучать в применении к той области, которая интересна. Иначе ничего не выйдет.

    Интересен геймдев - вперед в геймдев. Интересно сис.админство - import os и вперед, интересно машинное обучение - pip install scikit-learn и вперед. То что непонятно как реализовать - читать и вникать. А сухая зубрежка синтаксиса ни к чему полезному не приведет.
    Ответ написан
    3 комментария
  • Как добавить использование GPU в программы на Python?

    @SolidMinus
    PyCUDA https://documen.tician.de/pycuda/

    Нет, полностью не надо. Только там где идет перебор seed. Надо распараллелить по ядрам куда. Конкретно как это в питоне делается я хз, юзаю CUDA из Си. Уверен, что в PyCuda все еще проще.

    P.S. Для работы требуется видеокарта Nvidia с установленной CUDA toolkit

    UPD: Погуглил. Поддержки у питона CUDA API нет. PyCUDA использует wrapper для Си-образного кода для параллельного программирования от Nvidia. Придется весь код перебора переписывать в этом контексте, и исполнять его через PyCUDA. В документации есть пример такой реализации. Поэтому вердикт: если хочешь юзать GPU, придется изучать еще как кодить под GPU.
    Ответ написан
    Комментировать
  • Что посоветуете для сравнения двух предложений по смыслу?

    @SolidMinus
    Унифицирование подойдет как препроцессинг текста. Т.е, есть некоторое множество < K, V >, где K - числовое описание класса синонима ( например, различные синонимы в один класс ), V - тензор синонимов, где по 0-й оси отложены вектора со словами, содержащие кодированные ( Unicode, так понимаю в данном случае ) слова. Стоит обратная задача нахождения по V соответствующего K, почти как словарь, но наоборот. Предложение трансформируется в последовательность K_i, после чего эта унифицированная, как вы правильно сказали, анализируется. Перед анализом унифицированный вектор надо отобразить в пространство фиксированной размерностью, чтобы все предложения были как бы одинаковой длины. Можно просто дописать нули, например, чтобы вектор стал с 5 компонентами ( максимальная длина предложения )

    Тут два варианта. 1-й более эффективный и сложный, 2-й более простой
    1) LSTM-сети. Почему LSTM? Потому что данный вид RNN сетей наиболее подходит для анализа последовательностей.
    По выходу определяете смысловой класс. Т.е, имеем RNN с 5 входами, и выходами, равными количеству смысловых классов, дающее k-мерный вектор распределения вероятностей по классам. argmax(output) будет наш класс. Типичная задача мультиклассовой классификации, но при помощи RNN сетей. Если с рнн не разберетесь, можно обычную MLP-сеть, но выход будет хреновеньким, т.к это последовательность завязанная на предыдущих состояниях элемента. У нас не бывает предложений вроде "привет нет да пока эх машина".

    Нужно предобучение на огромной базе размеченной вручную. Т.е, такой вектор - такой класс.

    2) Можно пойти по простому пути, без нейронных сетей использовать норму разницы между двумя векторами. Требуемым, и введенным, чем меньше норма - тем более близкое по смыслу предложение. Ведь числовая последовательность предложения является вектором в n-мерном пространстве. В нашем случае после нормализации в 5-мерном пространстве. А норма - это обобщение расстояния на большие размерности, т.е при разницы векторов предложений мы получаем третий вектор, чья длина - расстояние между векторами. Можно использовать различные метрики. Какая больше нравится. Я бы предпочел метрику минковского c p = 2.

    Предобучение не требуется, никаких сложностей тоже. Просто школьная арифметика. Но и предложения, например:

    "Сегодня я пошел в школу снова" и "Завтра я поеду в командировку опять" могут показаться одинаковыми по смыслу. О чем и говорил Максим Чернятевич, имея ввиду, что с базой синонимов можно сделать только самый простой анализ, т.к после нормализации по синонимам в один вектор, скорее будут полностью равны.
    Ответ написан
    2 комментария
  • Пре и пост инкремент в python?

    @SolidMinus
    Если имеется ввиду ++i и i++, то нет

    ++i - это эквивалентно +(+i), что распарсивается в i, в итоге ++i == i -> True

    >>> ++i == i
    True
    >>> +(+i) == ++i
    True


    i++ не поддерживается
    Ответ написан
    7 комментариев
  • Почему Python так странно себя ведёт?

    @SolidMinus
    Какой результат у этой строчки будет?
    print(login_list[0] == 'Login')

    И посмотри в wireshark дампы запросов к сайту в обеих вариантах, есть ли различие какое-либо. Скорее всего логин неверно с файла считывается.

    Может на сайте банально WAF стоит или ограничение на количество попыток авторизации... посмотри коды ответов от сервера

    Я так понимаю что эта строчка:
    if "text" in r.text:
    Была изменена, чтобы тебя на тостере не спалили? Спалили. Или ты серьезно по строке "text" определяешь прошла авторизация или нет?

    А вообще юзание этого кода - 272 ук рф, если на то пошло.
    Ответ написан
  • Что будет, если импортировать весь модуль?

    @SolidMinus
    Из очевидного:

    from math import floor
    ...
    floor(...)

    import math
    ...
    math.floor(...)


    Из неочевидного:

    Во время импорта модуля вызывается весь основной код на выполнение ( инициализации и т.д ), что занимает время загрузки скрипта. + если юзать в продакшн, например, через py2exe и т.д, то это заставит его подтянуть весь код из math, а не только функцию floor.

    Короче, кратко: чтобы дофига лишней херни не тащить
    Ответ написан
    4 комментария
  • Стоит ли писать онлайн игру на Python, PyGame?

    @SolidMinus
    Да, часть WoT действительно написана на Python
    Ответ написан
    Комментировать