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

Функция log

Функция log вычисляет натуральный логарифм (по основанию e) от каждого элемента переданного тензора. На вход функция принимает тензор произвольной формы, а возвращает новый тензор той же формы, каждый элемент которого является натуральным логарифмом соответствующего элемента исходного тензора. Функция поддерживает автоматическое дифференцирование, что позволяет использовать её в графах вычислений нейронных сетей.

Синтаксис

torch.log(input, *, out=None)

Параметры функции:

  • input (Tensor) - входной тензор, для элементов которого вычисляется натуральный логарифм
  • out (Tensor, optional) - тензор для записи результата (необязательный параметр)

Пример

Давайте вычислим натуральные логарифмы для элементов тензора:

import torch t = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0]) res = torch.log(t) print(res)

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

tensor([0.0000, 0.6931, 1.0986, 1.3863, 1.6094])

Как видите, каждое число преобразовано в его натуральный логарифм.

Пример

Функция log также работает с многомерными тензорами:

import torch t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], ]) res = torch.log(t) print(res)

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

tensor([ [0.0000, 0.6931, 1.0986], [1.3863, 1.6094, 1.7918], ])

Пример

Вы можете использовать параметр out для записи результата в заранее созданный тензор:

import torch t = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0]) out = torch.empty(5) torch.log(t, out=out) print(out)

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

tensor([0.0000, 0.6931, 1.0986, 1.3863, 1.6094])

Пример

Так как натуральный логарифм определён только для положительных чисел, функция log возвращает -inf для нулевых значений и nan для отрицательных:

import torch t = torch.tensor([0.0, 1.0, -2.0, 3.0]) res = torch.log(t) print(res)

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

tensor([-inf, 0.0000, nan, 1.0986])

Пример

Функция log поддерживает автоматическое дифференцирование, что важно для обучения нейронных сетей:

import torch t = torch.tensor([1.0, 2.0, 3.0], requires_grad=True) res = torch.log(t) res.sum().backward() print(t.grad)

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

tensor([1.0000, 0.5000, 0.3333])

Градиент от log(x) равен 1/x, что и подтверждает результат.

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

  • функцию log1p,
    которая вычисляет натуральный логарифм от (1 + x) с повышенной точностью для малых x
  • функцию log2,
    которая вычисляет логарифм по основанию 2
  • функцию log10,
    которая вычисляет логарифм по основанию 10
  • функцию exp,
    которая вычисляет экспоненту (обратную операцию к логарифму)
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить