РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
331 of 769 menu

Класс ReLU6

Класс ReLU6 из модуля torch.nn представляет собой функцию активации, которая применяется к каждому элементу входного тензора. Она работает по принципу стандартной функции ReLU, но с дополнительным ограничением сверху: все значения, превышающие 6, обрезаются до 6. Это делает функцию более устойчивой к большим входным значениям и часто используется в мобильных нейросетях, например, в архитектуре MobileNet.

Синтаксис

torch.nn.ReLU6(inplace=False)

Параметр inplace управляет тем, будет ли операция выполняться с изменением исходного тензора или с созданием нового. По умолчанию стоит False.

Пример

Давайте создадим слой ReLU6 и применим его к тензору чисел:

import torch import torch.nn as nn relu6 = nn.ReLU6() t = torch.tensor([-5.0, -1.0, 0.0, 3.0, 5.0, 8.0, 12.0]) res = relu6(t) print(res)

Результат выполнения кода:

tensor([0., 0., 0., 3., 5., 6., 6.])

Как видно из примера, отрицательные значения превращаются в 0, значения от 0 до 6 остаются без изменений, а значения больше 6 обрезаются до 6.

Пример

Рассмотрим использование ReLU6 в составе последовательной модели:

import torch import torch.nn as nn model = nn.Sequential( nn.Linear(10, 5), nn.ReLU6(), nn.Linear(5, 1) ) t = torch.randn(3, 10) res = model(t) print(res)

Результат выполнения кода:

tensor([[-1.6424], [ 1.0486], [-1.4927]], grad_fn=<AddmmBackward0>)

В этом примере слой ReLU6 применяется после первого линейного слоя, ограничивая его выходные значения диапазоном от 0 до 6 перед передачей во второй линейный слой.

Пример

Параметр inplace позволяет изменить исходный тензор напрямую, что экономит память:

import torch import torch.nn as nn relu6_inplace = nn.ReLU6(inplace=True) t = torch.tensor([-2.0, 1.0, 4.0, 9.0]) print("До применения:", t) res = relu6_inplace(t) print("После применения:", t) print("Возвращенный тензор:", res)

Результат выполнения кода:

До применения: tensor([-2., 1., 4., 9.]) После применения: tensor([0., 1., 4., 6.]) Возвращенный тензор: tensor([0., 1., 4., 6.])

При использовании inplace=True исходный тензор изменяется, а возвращаемый тензор является ссылкой на него же.

Смотрите также

  • класс ReLU,
    который реализует стандартную функцию активации без верхнего ограничения
  • класс Hardtanh,
    который ограничивает значения в произвольном диапазоне
  • класс LeakyReLU,
    который позволяет небольшой градиент для отрицательных значений
  • класс ELU,
    который использует экспоненциальную функцию для отрицательных значений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить