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

Класс Softmin

Класс Softmin модуля torch.nn применяет функцию мягкого минимума к входному тензору вдоль указанной размерности. Эта функция является обобщением обычного минимума и преобразует входные значения в вероятности, которые обратно пропорциональны значениям входного тензора. Формула вычисления имеет вид: exp(-x_i) / sum(exp(-x_j)). Основным параметром конструктора является dim, который задает размерность, вдоль которой будет применяться операция. Если размерность не указана, то вычисления будут производиться по последней оси входного тензора.

Синтаксис

torch.nn.Softmin(dim=None)

Параметры

Основные параметры класса:

  • dim (int, опционально) - размерность, вдоль которой будет вычисляться мягкий минимум. Если параметр не передан, вычисления проводятся по последней оси (размерности) тензора.

Пример

Создадим слой Softmin без указания размерности и применим его к одномерному тензору:

import torch import torch.nn as nn softmin = nn.Softmin() t = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0]) res = softmin(t) print(res)

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

tensor([0.5123, 0.1884, 0.0693, 0.0255, 0.0094])

Как видно из результата, наибольшая вероятность присвоена наименьшему значению (1.0), а наименьшая - наибольшему (5.0), что соответствует логике работы мягкого минимума.

Пример

Рассмотрим применение Softmin к двумерному тензору вдоль разных размерностей. Сначала применим слой без указания dim, тогда вычисления будут по последней оси:

import torch import torch.nn as nn softmin = nn.Softmin() t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], ]) res = softmin(t) print(res)

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

tensor([ [0.6652, 0.2447, 0.0900], [0.6652, 0.2447, 0.0900], ])

Теперь укажем размерность dim=0, чтобы вычисления производились по строкам (первой оси):

import torch import torch.nn as nn softmin = nn.Softmin(dim=0) t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], ]) res = softmin(t) print(res)

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

tensor([ [0.9526, 0.9526, 0.9526], [0.0474, 0.0474, 0.0474], ])

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

Пример

Применим Softmin с отрицательными значениями. Функция работает корректно с любыми числами, так как использует экспоненту:

import torch import torch.nn as nn softmin = nn.Softmin(dim=0) t = torch.tensor([-1.0, -2.0, -3.0]) res = softmin(t) print(res)

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

tensor([0.0900, 0.2447, 0.6652])

Здесь наименьшее значение (-3.0) получает наибольшую вероятность 0.6652, а наибольшее значение (-1.0) - наименьшую 0.0900.

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

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