PyTorch torch.tensor 関数
torch.tensorPyTorch でテンソルを作成するための核心関数です。データをコピーして新しいテンソルを作成し、元のデータの自動勾配履歴は保持されません。
これは PyTorch テンソルを作成する最も一般的な方法の 1 つであり、ほとんどのシナリオに適しています。
関数定義
torch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False)
パラメータ:
data(任意の型): テンソルのデータ。Python リスト、タプル、NumPy 配列などを指定できます。dtype(torch.dtype, オプション): テンソルのデータ型を指定します。例:torch.float32、torch.int64など。device(torch.device, オプション): テンソルを格納するデバイスを指定します。例:torch.device('cpu')或torch.device('cuda')。requires_grad(bool, オプション): 勾配を計算する必要があるかどうか。デフォルトはFalse。pin_memory(bool, オプション): ページロックメモリを使用するかどうか。デフォルトはFalse。
戻り値:
torch.Tensor: PyTorch テンソルを返します。
使用例
以下は、torch.tensor関数の使用例です。
例1: リストからテンソルを作成
例
import torch
# Python リストから1次元テンソルを作成
data = [1, 2, 3, 4, 5]
x = torch.tensor(data)
print(x)
print(x.dtype)
# Python リストから1次元テンソルを作成
data = [1, 2, 3, 4, 5]
x = torch.tensor(data)
print(x)
print(x.dtype)
出力結果は次のとおりです:
tensor([1, 2, 3, 4, 5]) torch.int64
この例では、Python リストから1次元テンソルを作成しました。PyTorch はデータ型を自動的に推論してint64。
例2: データ型を指定
例
import torch
# float32型のテンソルを作成
x = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float32)
print(x)
print(x.dtype)
# float32型のテンソルを作成
x = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float32)
print(x)
print(x.dtype)
出力結果は次のとおりです:
tensor([1., 2., 3.]) torch.float32
この例では、テンソルのデータ型を明示的に指定しました。float32。
例3: 勾配が必要なテンソルを作成
例
import torch
# 勾配の計算が必要なテンソルを作成
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
print(x.requires_grad)
# 勾配の計算が必要なテンソルを作成
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
print(x.requires_grad)
出力結果は次のとおりです:
True
この例では、勾配の計算が必要なテンソルを作成しました。これはニューラルネットワークのトレーニングに非常に役立ちます。
例4: 2次元リストからテンソルを作成
例
import torch
# 2次元リストから2次元テンソル(行列)を作成
data = [[1, 2, 3], [4, 5, 6]]
x = torch.tensor(data)
print(x)
print(x.shape)
# 2次元リストから2次元テンソル(行列)を作成
data = [[1, 2, 3], [4, 5, 6]]
x = torch.tensor(data)
print(x)
print(x.shape)
出力結果は次のとおりです:
tensor([[1, 2, 3],
[4, 5, 6]])
torch.Size([2, 3])
この例では、2次元リストから 2x3 の2次元テンソルを作成しました。
例5: CUDAデバイス上でテンソルを作成
例
import torch
# CUDAが利用可能かどうかを確認
if torch.cuda.is_available():
# CUDAデバイス上でテンソルを作成
x = torch.tensor([1, 2, 3], device='cuda')
print(x.device)
else:
print("CUDA は利用できません")
# CUDAが利用可能かどうかを確認
if torch.cuda.is_available():
# CUDAデバイス上でテンソルを作成
x = torch.tensor([1, 2, 3], device='cuda')
print(x.device)
else:
print("CUDA は利用できません")
出力結果は次のとおりです:
cuda:0
この例では、CUDAが利用可能かどうかを確認し、GPU上でテンソルを作成します。
torch.tensor と torch.as_tensor の違い
torch.tensorとtorch.as_tensorどちらもテンソルの作成に使用されますが、重要な違いがあります。
torch.tensor: 常にデータをコピーするため、作成されたテンソルは元のデータとメモリを共有しません。torch.as_tensor: 可能な限りデータを共有し、メモリをコピーしません。必要な場合にのみコピーします。
自動勾配履歴を保持する必要がある場合や、不要なデータコピーを避けたい場合は、使用できます。torch.as_tensor。
注意事項
torch.tensorデータをコピーするため、返されたテンソルへの変更は元のデータに影響しません。- 別のテンソルと同じ形状とデバイスを持つ新しいテンソルを作成する場合は、使用できます。
torch.zeros_like()或torch.ones_like()。 - テンソルを作成するとき、もし指定しなければ
dtype、PyTorch はデータ型を自動的に推論します。
その他の拡張
PyTorch torch リファレンスマニュアル