LoginSignup
0
1

【備忘録】PyTorch tensor操作

Last updated at Posted at 2024-05-11

はじめに

PyTorchを活用するシーンが増えてきたので
tensor操作に関して備忘録を残しておくことにする

初級者向けの内容です

tensor操作

NumPyのarray操作と似ている

①定義

例) 2行3列のデータを両者で定義すると・・・

import numpy as np
npdata = np.array( [ [0,1,2],[3,4,5] ] )
import torch
tendata = torch.tensor( [ [0,1,2],[3,4,5] ] )

他にも類似した関数は下記の通りである.

ゼロを定義する

# numpy
npzero = np.zeros((2,3))
# tensor
tenzero = torch.zeros((2,3))

1を定義する

# numpy
npone = np.ones((2,3))
# tensor
tenone = torch.ones((2,3))

乱数を定義する

# numpy
npran = np.random.rand(2,3)
# tensor
tenran = torch.rand((2,3))

②tensorのサイズ,タイプ等の確認

データ型の確認

ten = torch.tensor( [[0,1,2],[3,4,5]])
ten.dtype

サイズの確認

ten.shape

Pythonのオブジェクトタイプの確認

type(ten)

NumPyとPyTorchでデフォルトの型が異なる点注意が必要

int型 float型
NumPy int32 float64
PyTorch int64 float32

例えば,NumPyと型を揃えて,PyTorchで定義したいときは
dtypeオプションを活用すると良い

ten2 = torch.zeros( (2,3), dtype = torch.int32 )

③tensor  ↔️ numpy.array 変換

両者の間での変換については下記の通り

tensor から numpy.arrayへ変換

# tensorで宣言
before = torch.zeros(3)

# tensorからnumpy arrayに変換
after = before.numpy()

Numpy arrayからTensorに変換

change = torch.from_numpy(after)

さらに
pandas dataframe から Numpy arrayに変換 tensor に変換

# pandas dataframe宣言
import pandas as pd
dict1 = {"a":[1,2,3],"b":[1,2,3],"c":[1,2,3]}
df = pd.DataFrame(dict1)

# pandas から numpyに変換
arr = df.to_numpy()

# numpy から tensorに変換
arrcha = torch.from_numpy(arr)

④転置行列

transposeを活用した転置行列の求め方は下記の通り


# 4行3列の乱数tensorを定義
x = torch.rand((4,3))

# xの転置行列を算出
Tx = x.transpose(0,1)

⑤行列のサイズ変更

reshapeを活用した行列サイズ変更は下記の通り

# 1行16列データを作成
x = torch.ones(16)

# 2行8列データに変換
rex1 = x.reshape(2,8)

image.png

さらに列数をオートで4行に変換したいときはreshape(4,-1)

# 4行4列データに変換
rex2 = x.reshape(4,-1)
rex2

image.png

※ 割り切れないときはエラーになるので注意

x2 = torch.ones(15)
rex3 = x2.reshape(2,-1)
rex3     

image.png

操作に関するノートブックはこちら

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1