Рубрика «optimization»

Мы привыкли использовать ReduceLROnPlateau если val_loss не улучшается N эпох подряд - режем learning_rate. Это работает. Мы ждем, пока обучение врежется в стену, и только потом реагируем.

А что, если мы могли бы увидеть эту стену заранее? Что, если бы мы могли сбросить скорость плавно, еще на подходе к плато, и снова нажать на газ, если впереди откроется новый спуск?

Я хочу поделиться концепцией умного LR шедулера, который управляет скоростью обучения, анализируя не сам loss, а скорость его изменения.

Проблема ReduceLROnPlateau: Мы реагируем на симптом, а не на причину

Читать полностью »

Привет! Каждый, кто обучал нейронные сети, знаком с механизмом Early Stopping. Этот механизм останавливает обучение, когда метрика перестаёт улучшаться, экономя время и предотвращая переобучение. Классическая реализация проста и понятна, если loss на валидации не улучшается в течение N эпох мы останавливаемся и сохраняем лучшую модель.

Проблема классического подхода: реакция на шум

Ландшафт функции потерь редко бывает идеально гладким. В процессе обучения loss может немного дрожать - незначительно расти на пару эпох, а затем находить новую, еще более глубокую долину.

Читать полностью »

Всем привет! 👋

Я — Дмитрий, автор Sury — самой быстрой библиотеки для работы со схемами. Если вы фанат Zod (а кто не фанат?), эта статья для вас. Сегодня я поделюсь неожиданными результатами тестов производительности Zod v4, расскажу, что это значит для вас, и как избежать подводных камней.

Zod v4: Стал в 17 раз медленнееб и никто этого не заметил 🙈

Начнём с небольшого кликбейта)

Это действительно так, но, конечно, не вся правда. Давайте разберёмся.

Недавно, готовясь к большому релизу Читать полностью »

Расскажу об одном решении которое имеет больше смысла в качестве упражнения а не практической пользы. Постановка задачи звучит так: Хочу получить в C++ семантику property как в C# и без накладных расходов.

В начале будет результат к которому я пришел, затем пояснения и выводы.

К слову, компиляторы Microsoft имеют способ описать property но это не является частью стандарта C++.

Сразу отмечу что property получились с значительными ограничениями и больше подходят для имитации SwizzlingЧитать полностью »

Поделить нельзя — умножить или алгоритм быстрого деления по методу Ньютона-Рафсона - 1

Все мы в школе проходили деление «столбиком» — простой алгоритм, который несложно реализовать, вот только не очень быстрый. В прошлый раз мы рассматривали, как компилятор оптимизирует деление в случаях, когда делитель известен во время компиляции, но применение его напрямую, чтоб оптимизировать деление для делителей, определямых в run-time, невозможно: вычисление констант сдвига и умножения само по себе требует деления.

В этот раз хочется поговорить о другом методе, сводящем деление к умножениям и битовым сдвигам, основанном на методе поиска корней функции.
Читать полностью »

Как поделить не деля или оптимизация деления компиляторам(и) - 1

Если вы никогда не пробовали смотреть как код на C++ разворачивается компилятором в код Assembly – вас ждёт много сюрпризов, причём, не нужно смотреть какой-то замудренный исходный код полный templates или других сложных конструкций: рассмотрите следующий snippet:

uint8_t div10(uint8_t x)
{
    return x/10;
}

Читать полностью »

В предыдущих сериях

Микрооптимизации:

  1. Сказка про Method as Parameter #dotnet #methods #gc

  2. Инструменты анализа эффективности работы приложения. PerfView #performance_analysis #trace #perfview

  3. Пародия на замыкания #dotnet #methods #gc

  4. yield return #dotnet #il-code

Про тредпул:

  1. ThreadPool.Intro #dotnet #threadpool

  2. ThreadPool. async/awaitЧитать полностью »

В предыдущих сериях

Как вы знаете, формат изображений WebP в большинстве случаев имеет меньший вес, по сравнению со своими братьями: png и jpeg. Поэтому использовать его в своих приложениях - это хорошая практика.

А как же пользователи, устройства которых не поддерживают данный формат?

В этом случае нам помогает тег <picture> или значение image-set свойства background-image. Просто пишем такие магические конструкции и браузер сам выберет тот источник, который понимает:

<!-- for HTML... -->
<picture>
  <source type="image/webp" srcset="images/cat.webp">
  <img src="images/cat.jpg" width="100" height="100" alt="Cat">
</picture>
Читать полностью »

https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js