PyTorch torch.zeros 関数
torch.zerosPyTorch で全ゼロテンソルを作成するための関数です。指定した形状のテンソルを作成し、すべての要素が 0 に初期化されます。
これは深層学習でテンソルの初期化に最もよく使われる方法の 1 つであり、バイアスベクトルやプレースホルダーの作成、モデルパラメータの初期化によく使用されます。
関数定義
torch.zeros(*size, dtype=None, device=None, requires_grad=False, pin_memory=False)
パラメータ:
*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: 1次元の全ゼロテンソルを作成
例
import torch
# 5つの要素を含む全ゼロテンソルを作成
x = torch.zeros(5)
print(x)
# 5つの要素を含む全ゼロテンソルを作成
x = torch.zeros(5)
print(x)
出力結果は次のとおりです。
tensor([0., 0., 0., 0., 0.])
この例では、5つの要素を含む1次元の全ゼロテンソルを作成しました。
例2: 2次元の全ゼロテンソルを作成
例
import torch
# 3x4 の全ゼロテンソル(行列)を作成
x = torch.zeros(3, 4)
print(x)
print(x.shape)
# 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])
この例では、3行4列の2次元の全ゼロテンソルを作成しました。
例3: 整数型の全ゼロテンソルを作成
例
import torch
# 整数型の全ゼロテンソルを作成
x = torch.zeros(3, 3, dtype=torch.int32)
print(x)
print(x.dtype)
# 整数型の全ゼロテンソルを作成
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;">(</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;">)</span><br />
<br />
<span style="color: Green;font-weight:bold;">print</span><span style="color: Olive;">(</span>x.<span style="color: #05a;">requires_grad</span><span style="color: Olive;">)</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 が利用できません")
# CUDAが利用可能かどうかを確認
if torch.cuda.is_available():
# CUDAデバイス上に全ゼロテンソルを作成
x = torch.zeros(3, 4, device='cuda')
print(x.device)
else:
print("CUDA が利用できません")
出力結果は次のとおりです。
cuda:0
この例では、CUDAが利用可能かどうかを確認し、GPU上に全ゼロテンソルを作成しました。
torch.zeros と torch.zeros_like の違い
torch.zeros(*size): 指定されたサイズに基づいて全ゼロテンソルを作成します。torch.zeros_like(input): 入力テンソルの形状に基づいて全ゼロテンソルを作成し、入力テンソルの dtype と device を保持します。
使用シーン
torch.zerosこの関数は通常、以下のシーンで使用されます。
- バイアスベクトルの初期化: ニューラルネットワークでは、バイアスは通常ゼロに初期化されます。
- プレースホルダーの作成: 動的計算グラフで入力プレースホルダーとして使用します。
- 配列を埋める: 初期値がゼロの配列を作成し、後からデータを埋めます。
- 数学演算: ゼロを初期値として必要とする累積演算で使用します。
注意事項
- デフォルトでは、
torch.zeros作成されるのはfloat32型のテンソルです。 - 別のテンソルと同じ形状の全ゼロテンソルを作成する必要がある場合は、次を使用できます。
torch.zeros_like()。 - 全ゼロテンソルは深層学習で初期化としてよく使用されますが、場合によっては勾配消失問題を引き起こす可能性があります。
その他の拡張
Pytorch torch リファレンスマニュアル