Функция PyTorch torch.zeros


Pytorch torch 参考手册Справочное руководство Pytorch torch

torch.zerosЭто функция в PyTorch, используемая для создания тензоров, состоящих из нулей. Она создаёт тензор заданной формы, все элементы которого инициализированы значением 0.

Это один из самых распространённых способов инициализации тензоров в глубоком обучении; часто используется для создания векторов смещения, заполнителей или инициализации параметров модели.

Определение функции

torch.zeros(*size, dtype=None, device=None, requires_grad=False, pin_memory=False)

Parameters:

  • *size(int): форма тензора, например.3、(3, 4)、(2, 3, 4)и т. д.
  • dtype(torch.dtype, необязательно): задаёт тип данных тензора, по умолчаниюtorch.float32。
  • device(torch.device, необязательно): задаёт устройство, на котором хранится тензор.
  • requires_grad(bool, необязательно): Вычислять ли градиенты.
  • pin_memory(bool, необязательно): использовать ли закреплённую память.

Возвращаемое значение:

  • torch.Tensor: Возвращает тензор, заполненный нулями.

Примеры использования

Ниже приведены некоторыеtorch.zerosпримеры использования функции.

Пример 1: Создание 1D-тензора, заполненного нулями

Пример

import torch

# Создать тензор, заполненный нулями, содержащий 5 элементов
x = torch.zeros(5)

print(x)

Результат вывода:

tensor([0., 0., 0., 0., 0.])

В этом примере мы создали 1D-тензор, заполненный нулями, содержащий 5 элементов.

Пример 2: Создание 2D-тензора, заполненного нулями

Пример

import torch

# Создать тензор 3x4, заполненный нулями (матрицу)
x = torch.zeros(3, 4)

print(x)
print(x.shape)

Результат вывода:

tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])
torch.Size([3, 4])

В этом примере мы создали 2D-тензор, заполненный нулями, с 3 строками и 4 столбцами.

Пример 3: Создание целочисленного тензора, заполненного нулями

Пример

import torch

# Создать тензор, заполненный нулями, целочисленного типа
x = torch.zeros(3, 3, dtype=torch.int32)

print(x)
print(x.dtype)

Результат вывода:

tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]], dtype=torch.int32)
</p>

<p>在这个示例中,我们创建了整数类型的全零张量,默认的 <code>float32</code> 被覆盖为 <code>int32</code>。</p>

<h3>示例 4: 创建需要梯度的全零张量</h3>

<div class="example">
<h2 class="example">实例</h2>
<div class="example_code">
<span style="color: Green;font-weight:bold;">import</span> torch<br />
<br />
<span style="color: #a50"># 创建需要梯度的全零张量</span><br />
x <span style="color: Gray;">=</span> torch.<span style="color: #05a;">zeros</span><span style="color: Olive;">&#40;</span><span style="color: Maroon;">3</span><span style="color: Gray;">,</span> requires_grad<span style="color: Gray;">=</span><span style="color: Teal;">True</span><span style="color: Olive;">&#41;</span><br />
<br />
<span style="color: Green;font-weight:bold;">print</span><span style="color: Olive;">&#40;</span>x.<span style="color: #05a;">requires_grad</span><span style="color: Olive;">&#41;</span><br />
</div>
</div>

<p>输出结果为:</p>
<pre>
True

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

Пример 5: Создание полностью нулевого тензора на устройстве CUDA

Пример

import torch

# Проверить, доступна ли CUDA
if torch.cuda.is_available():
    # Создание полностью нулевого тензора на устройстве CUDA
    x = torch.zeros(3, 4, device='cuda')
    print(x.device)
else:
    print("CUDA is not available")

Результат вывода:

cuda:0

В этом примере мы проверяем, доступна ли CUDA, а затем создаём полностью нулевой тензор на GPU.


Разница между torch.zeros и torch.zeros_like

  • torch.zeros(*size): Создаёт полностью нулевой тензор в соответствии с указанным размером.
  • torch.zeros_like(input): Создаёт полностью нулевой тензор на основе формы входного тензора, сохраняя dtype и device входного тензора.

Сценарии использования

torch.zerosФункция обычно используется в следующих сценариях:

  1. Инициализация векторов смещений: В нейронных сетях смещения обычно инициализируются нулями.
  2. Создание заполнителей: В качестве входных заполнителей в динамических вычислительных графах.
  3. Заполнение массивов: создайте массив, изначально заполненный нулями, а данные добавьте позже.
  4. Математические операции: В операциях накопления, где ноль нужен в качестве начального значения.

Примечания

  • По умолчанию,torch.zerosон создаётfloat32тензор типа.
  • Если вам нужно создать тензор, заполненный нулями, с той же формой, что и другой тензор, вы можете использоватьtorch.zeros_like()。
  • Тензоры, заполненные нулями, обычно используются для инициализации в глубоком обучении, но в некоторых случаях они могут привести к проблеме исчезающего градиента.

Pytorch torch 参考手册Справочное руководство Pytorch torch

Другие расширения