👍14🤯9❤5🔥1
🔥 Пишем GPT в 60 строк NumPy (часть 1 из 2)
В этом посте мы начнём реализацию с нуля GPT всего в 60 строках numpy. Во второй части статьи мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
Читать статью
Ждем вторую часть 🔥🔥🔥
В этом посте мы начнём реализацию с нуля GPT всего в 60 строках numpy. Во второй части статьи мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
Читать статью
Ждем вторую часть 🔥🔥🔥
👍19🔥4🤯2
Сортировка вставками
Подобно алгоритму сортировки выбором, мы делим наш список на две части. Далее мы перебираем не отсортированную часть и вставляем каждый элемент из данного сегмента на его правильное место в отсортированной части списка.
Алгоритм сортировки вставками:
▪️ нерекурсивный;
▪️ устойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place);
▪️ имеет сложность O(n^2);
Подобно алгоритму сортировки выбором, мы делим наш список на две части. Далее мы перебираем не отсортированную часть и вставляем каждый элемент из данного сегмента на его правильное место в отсортированной части списка.
Алгоритм сортировки вставками:
▪️ нерекурсивный;
▪️ устойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place);
▪️ имеет сложность O(n^2);
❤7👍4
🔥 Пишем GPT в 60 строк NumPy (окончание, 2/2)
В первой части поста мы начали реализацию с нуля GPT всего в 60 строках numpy.
Во завершающей части мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
Читать статью
В первой части поста мы начали реализацию с нуля GPT всего в 60 строках numpy.
Во завершающей части мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
Читать статью
👍22❤4
Media is too big
VIEW IN TELEGRAM
🎬 Python | Автоматизируем ВКонтакте | Selenium 4 | Аутентификация, скролл, нахождение элементов, клики
Автоматизируем работу ВКонтакте с помощью Selenium WebDriver. Пройдем аутентификацию в новой форме, научимся находить элементы по id, классу, имени и даже по содержащемуся в строке тексту, будем кликать на элементы, осуществлять поиск внутри контакта, прокручивать страницу с помощью исполнения JavaScript кода и в конце даже автоматизируем клик на видео пост.
➖ https://www.youtube.com/watch?v=3jMA7fdVI2s&t=6s
Автоматизируем работу ВКонтакте с помощью Selenium WebDriver. Пройдем аутентификацию в новой форме, научимся находить элементы по id, классу, имени и даже по содержащемуся в строке тексту, будем кликать на элементы, осуществлять поиск внутри контакта, прокручивать страницу с помощью исполнения JavaScript кода и в конце даже автоматизируем клик на видео пост.
➖ https://www.youtube.com/watch?v=3jMA7fdVI2s&t=6s
👍9❤2
Сортировка Шелла
Сортировка Шелла является оптимизированным вариантом сортировки вставками.
Оптимизация достигается путем сравнения не только соседних элементов, но и элементов на определенном расстоянии, которое в течении работы алгоритма уменьшается. На последней итерации это расстояние равно 1. После этого алгоритм становится обычным алгоритмом сортировки вставками, что гарантирует правильный результат сортировки.
Но следует отметить один момент: к тому времени, когда это произойдет, наш массив будет почти отсортирован, поэтому итерации будут выполнятся очень быстро.
Алгоритм сортировки Шелла:
▪️ нерекурсивный;
▪️ устойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place);
▪️ имеет сложность O(n^2), но это также зависит от выбора длины интервала;
Сортировка Шелла является оптимизированным вариантом сортировки вставками.
Оптимизация достигается путем сравнения не только соседних элементов, но и элементов на определенном расстоянии, которое в течении работы алгоритма уменьшается. На последней итерации это расстояние равно 1. После этого алгоритм становится обычным алгоритмом сортировки вставками, что гарантирует правильный результат сортировки.
Но следует отметить один момент: к тому времени, когда это произойдет, наш массив будет почти отсортирован, поэтому итерации будут выполнятся очень быстро.
Алгоритм сортировки Шелла:
▪️ нерекурсивный;
▪️ устойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place);
▪️ имеет сложность O(n^2), но это также зависит от выбора длины интервала;
👍12
🤔29👍6🤯2
Пирамидальная сортировка («сортировка кучей»)
Как и в двух предыдущих алгоритмах, мы создаем два сегмента списка: отсортированный и несортированный.
В данном алгоритме для эффективного нахождения максимального элемента в неотсортированной части списка мы используем структуру данных «куча».
Метод
Алгоритм пирамидальной сортировки:
▪️ нерекурсивный;
▪️ неустойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place);
▪️ имеет сложность O(nlog(n));
Как и в двух предыдущих алгоритмах, мы создаем два сегмента списка: отсортированный и несортированный.
В данном алгоритме для эффективного нахождения максимального элемента в неотсортированной части списка мы используем структуру данных «куча».
Метод
heapify
в примере кода использует рекурсию для получения элемента с максимальным значением на вершине.Алгоритм пирамидальной сортировки:
▪️ нерекурсивный;
▪️ неустойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place);
▪️ имеет сложность O(nlog(n));
👍17❤2
Media is too big
VIEW IN TELEGRAM
👾 Воссоздание DOOM в Python. Ep2 - Разделение двоичного пространства [ENG]
Разделение двоичного пространства - это сердце DOOM! Давайте разберемся, что такое BSP и как это работает в DOOM.
➖ https://www.youtube.com/watch?v=sFSLY7n3YsM
Первая часть здесь! Если вы плохо понимаете английский или совсем не понимаете, смотрите ролик на ютубе с субтитрами. В настройках субтитров можно включить перевод на удобный для Вас язык.
Разделение двоичного пространства - это сердце DOOM! Давайте разберемся, что такое BSP и как это работает в DOOM.
➖ https://www.youtube.com/watch?v=sFSLY7n3YsM
Первая часть здесь! Если вы плохо понимаете английский или совсем не понимаете, смотрите ролик на ютубе с субтитрами. В настройках субтитров можно включить перевод на удобный для Вас язык.
❤9👍1
👍17🤔8🔥2🤯2
Сортировка слиянием
Этот алгоритм работает по принципу «разделяй и властвуй».
Здесь мы делим список ровно пополам и продолжаем это делать, пока в нем не останется только один элемент. Затем мы объединяем уже упорядоченные части нашего списка. Мы продолжаем это делать, пока не получим отсортированный список со всеми элементами несортированного входного списка.
Алгоритм сортировки слиянием:
▪️ рекурсивный;
▪️ устойчивый;
▪️ требует дополнительной памяти;
▪️ имеет сложность O(nlog(n));
Этот алгоритм работает по принципу «разделяй и властвуй».
Здесь мы делим список ровно пополам и продолжаем это делать, пока в нем не останется только один элемент. Затем мы объединяем уже упорядоченные части нашего списка. Мы продолжаем это делать, пока не получим отсортированный список со всеми элементами несортированного входного списка.
Алгоритм сортировки слиянием:
▪️ рекурсивный;
▪️ устойчивый;
▪️ требует дополнительной памяти;
▪️ имеет сложность O(nlog(n));
👍12❤2
Быстрая сортировка
В этом алгоритме мы разбиваем список при помощи опорного элемента, сортируя значения вокруг него.
В нашей реализации мы выбрали опорным элементом последний элемент массива. Наилучшая производительность достигается тогда, когда опорный элемент делит список примерно пополам.
Алгоритм быстрой сортировки:
▪️ рекурсивный;
▪️ неустойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place);
▪️ имеет сложность O(nlog(n));
В этом алгоритме мы разбиваем список при помощи опорного элемента, сортируя значения вокруг него.
В нашей реализации мы выбрали опорным элементом последний элемент массива. Наилучшая производительность достигается тогда, когда опорный элемент делит список примерно пополам.
Алгоритм быстрой сортировки:
▪️ рекурсивный;
▪️ неустойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place);
▪️ имеет сложность O(nlog(n));
👍9❤1
Сортировка подсчетом
Этот алгоритм не производит сравнение элементов. Для сортировки используются математические свойства целых чисел. Мы подсчитываем вхождения числа в массиве и сохраняем результат во вспомогательном массиве, где индексу соответствует значение ключа.
Алгоритм сортировки подсчетом:
▪️ нерекурсивный;
▪️ устойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place), но все же требует дополнительной памяти;
▪️ имеет сложность O(n);
Этот алгоритм не производит сравнение элементов. Для сортировки используются математические свойства целых чисел. Мы подсчитываем вхождения числа в массиве и сохраняем результат во вспомогательном массиве, где индексу соответствует значение ключа.
Алгоритм сортировки подсчетом:
▪️ нерекурсивный;
▪️ устойчивый;
▪️ преобразует входные данные без использования вспомогательной структуры данных (in place), но все же требует дополнительной памяти;
▪️ имеет сложность O(n);
👍6