- 1. 概要
- 2. データからTensorの作成
- 3. NumpyのndarrayからTensorの作成
- 4. 他のTensorから新しいTensorの作成
- 5. 形状を指定した新しいTensorの作成
- 6. 全体コード
1. 概要
PyTorchにはTensorというものが存在します。
TensorはPyTorchの基本となるデータ構造で、多次元配列を扱います。
PyTorchでディープラーニングを構築する際には、基本的にはTensorを使用します。
Tensorの操作方法はNumpyの操作方法と似ており、Numpyと同じような感覚で操作できます。
PyTorchのいろいろなTensorの作成方法を紹介します。
2. データからTensorの作成
データを格納したリストを用意して、そこからTensorを作成します。
# データからTensorを作成 data = [[1, 2], [3, 4]] tensor_data = torch.tensor(data) print('データ型と中身の確認') print('データ型 : ', type(tensor_data)) print('データ : \n', tensor_data)
# Output データ型と中身の確認 データ型 : <class 'torch.Tensor'> データ : tensor([[1, 2], [3, 4]])
3. NumpyのndarrayからTensorの作成
Numpyのndarrayを用意し、Tensor型に変換することでTensorを作成します。
# ndarrayからTensorを作成 data = [[1, 2,], [3, 4]] np_data = np.array(data) print('変換前のデータ型と中身の確認') print('データ型 : ', type(np_data)) print('データ : \n', np_data) tensor_data = torch.from_numpy(np_data) print('変換後のデータ型と中身の確認') print('データ型 : ', type(tensor_data)) print('データ : \n', tensor_data)
# Output 変換前のデータ型と中身の確認 データ型 : <class 'numpy.ndarray'> データ : [[1 2] [3 4]] 変換後のデータ型と中身の確認 データ型 : <class 'torch.Tensor'> データ : tensor([[1, 2], [3, 4]], dtype=torch.int32)
4. 他のTensorから新しいTensorの作成
元のTensorを指定することで、同じ形状のTensorを作成することができます。
# 他のTensorから新しいTensorの作成 data = [[1, 2], [3, 4]] tensor_data = torch.tensor(data, dtype=torch.int32) print('元データのデータ型と中身の確認') print('データ型 : ', type(tensor_data)) print('データ : \n', tensor_data) # 指定したTensorと同じ形状のTensorを作成 # 中身はすべて1が入る ones_data = torch.ones_like(tensor_data) print('作成データのデータ型と中身の確認') print('データ型 : ', type(ones_data)) print('データ : \n', ones_data)
# Output 元データのデータ型と中身の確認 データ型 : <class 'torch.Tensor'> データ : tensor([[1, 2], [3, 4]], dtype=torch.int32) 作成データのデータ型と中身の確認 データ型 : <class 'torch.Tensor'> データ : tensor([[1, 1], [1, 1]], dtype=torch.int32)
5. 形状を指定した新しいTensorの作成
作成するデータの形状を指定することで、Tensorを作成することができます。
# 形状を指定してTensorを作成 shape = (2, 3) # ランダム値のTensor作成 random_tensor = torch.rand(shape) print('データ型と中身の確認') print('データ型 : ', type(random_tensor)) print('データ : \n', random_tensor) # すべて1のTensor作成 ones_tensor = torch.ones(shape) print('データ型と中身の確認') print('データ型 : ', type(ones_tensor)) print('データ : \n', ones_tensor) # すべて0のTensor作成 zeros_tensor = torch.zeros(shape) print('データ型と中身の確認') print('データ型 : ', type(zeros_tensor)) print('データ : \n', zeros_tensor)
# Output データ型と中身の確認 データ型 : <class 'torch.Tensor'> データ : tensor([[0.4534, 0.7046, 0.3841], [0.0558, 0.6755, 0.5836]]) データ型と中身の確認 データ型 : <class 'torch.Tensor'> データ : tensor([[1., 1., 1.], [1., 1., 1.]]) データ型と中身の確認 データ型 : <class 'torch.Tensor'> データ : tensor([[0., 0., 0.], [0., 0., 0.]])
リンク
6. 全体コード
最後に全体のコードをのせておきます。
# ライブラリの読み込み import numpy as np import torch # データからTensorを作成 data = [[1, 2], [3, 4]] tensor_data = torch.tensor(data) print('データ型と中身の確認') print('データ型 : ', type(tensor_data)) print('データ : \n', tensor_data) # ndarrayからTensorを作成 data = [[1, 2,], [3, 4]] np_data = np.array(data) print('変換前のデータ型と中身の確認') print('データ型 : ', type(np_data)) print('データ : \n', np_data) tensor_data = torch.from_numpy(np_data) print('変換後のデータ型と中身の確認') print('データ型 : ', type(tensor_data)) print('データ : \n', tensor_data) # 他のTensorから新しいTensorの作成 data = [[1, 2], [3, 4]] tensor_data = torch.tensor(data, dtype=torch.int32) print('元データのデータ型と中身の確認') print('データ型 : ', type(tensor_data)) print('データ : \n', tensor_data) # 指定したTensorと同じ形状のTensorを作成 # 中身はすべて1が入る ones_data = torch.ones_like(tensor_data) print('作成データのデータ型と中身の確認') print('データ型 : ', type(ones_data)) print('データ : \n', ones_data) # 形状を指定してTensorを作成 shape = (2, 3) # ランダム値のTensor作成 random_tensor = torch.rand(shape) print('データ型と中身の確認') print('データ型 : ', type(random_tensor)) print('データ : \n', random_tensor) # すべて1のTensor作成 ones_tensor = torch.ones(shape) print('データ型と中身の確認') print('データ型 : ', type(ones_tensor)) print('データ : \n', ones_tensor) # すべて0のTensor作成 zeros_tensor = torch.zeros(shape) print('元データのデータ型と中身の確認') print('データ型 : ', type(zeros_tensor)) print('データ : \n', zeros_tensor)