Функция PyTorch torch.linspace
Справочное руководство Pytorch torch
torch.linspaceЭто функция в PyTorch, используемая для создания тензоров равномерно распределенной последовательности. Она создает одномерный тензор, содержащий равномерно распределенную последовательность от начального значения до конечного значения.
иtorch.arangeОтличается,torch.linspaceОн задает количество элементов, а не размер шага, что очень полезно, когда требуется точный контроль над количеством элементов.
Определение функции
torch.linspace(start, end, steps, dtype=None, device=None, requires_grad=False)
Parameters:
start(float): начальное значение последовательности.end(float): конечное значение последовательности (включительно).steps(int): количество элементов в последовательности, должно быть положительным целым числом.dtype(torch.dtype, необязательно): Указывает тип данных тензора.device(torch.device, необязательно): Указывает устройство, на котором хранится тензор.requires_grad(bool, необязательно): нужно ли вычислять градиенты.
Возвращаемое значение:
torch.Tensor: Возвращает одномерный тензор.
Примеры использования
Пример 1: Создать 5 равноудалённых точек
Пример
import torch
# Создать равномерно распределённую последовательность от 0 до 10 всего из 5 точек
x = torch.linspace(0, 10, 5)
print(x)
# Создать равномерно распределённую последовательность от 0 до 10 всего из 5 точек
x = torch.linspace(0, 10, 5)
print(x)
Результат вывода:
tensor([ 0.0000, 2.5000, 5.0000, 7.5000, 10.0000])
Пример 2: Создать 10 точек
Пример
import torch
# Создать равномерно распределённую последовательность от -1 до 1 всего из 10 точек
x = torch.linspace(-1, 1, 10)
print(x)
# Создать равномерно распределённую последовательность от -1 до 1 всего из 10 точек
x = torch.linspace(-1, 1, 10)
print(x)
Результат вывода:
tensor([-1.0000, -0.7778, -0.5556, -0.3333, -0.1111, 0.1111, 0.3333, 0.5556,
0.7778, 1.0000])
Пример 3: Используется для планирования скорости обучения нейронной сети
Пример
import torch
# Имитировать постепенное уменьшение скорости обучения с 0.1 до 0.001
learning_rates = torch.linspace(0.1, 0.001, 100)
print("Начальная скорость обучения:", learning_rates[0].item())
print("Конечная скорость обучения:", learning_rates[-1].item())
# Имитировать постепенное уменьшение скорости обучения с 0.1 до 0.001
learning_rates = torch.linspace(0.1, 0.001, 100)
print("Начальная скорость обучения:", learning_rates[0].item())
print("Конечная скорость обучения:", learning_rates[-1].item())
Результат вывода:
初始学习率: 0.10000000149011612 最终学习率: 0.0010000000474974513
В этом примере мы создали последовательность, содержащую 100 значений скорости обучения, что обычно используется для планирования скорости обучения.
Разница между torch.arange и torch.linspace
torch.arange(start, end, step): Создает последовательность на основе размера шага; количество элементов определяется диапазоном и размером шага.torch.linspace(start, end, steps): Создает последовательность на основе количества элементов; интервал определяется диапазоном и количеством элементов.
Другие расширения