数値計算のためのPythonライブラリ
NumPyとPyTorchとは
NumPy
CPU上での多次元配列データ構造(numpy.ndarray)および数値計算に利用
科学技術計算のためのライブラリ。
PyTorch
CPG/GPU上での多次元入れつデータ構造(torch.Tensor)および数値計算に利用
真相学習のためのフレームワーク。ニューラルネットワークを構築するための構成要素(全結合層、畳み込み層、活性化関数 etc...)、学習のための最適化ルーチンなど、あらゆる機能が提供されている。
NumPyとPyTorchを用いた配列の作成
import numpy as np import torch
x = np.zeros((2,2), dtype=np.float32) x
y = torch.zeros(2,2, dtype=torch.float) y
type(x)
type(y)
numpy.ndarrayとtorch.Tensorのインターフェイスの違い
NumPyとPyTorchを用いる注意点として、numpy.ndarrayとtorch.Tensorのインターフェイスが異なるということが挙げられる。
Numpy では配列のサイズを tuple で与える
x = np.zeros((1,2,3), dtype=np.float32) x
PyTorch では配列のサイズを別々の引数で与えられる
y = torch.zeros(1, 2, 3, dtype=torch.float32) y
x = y
x.shape == y.shape
numpy.ndarrayとtorch.Tensorの互換性
PyTorchには、torch.Tensorからnumpy.ndarrayに変換する関数(tensor.numpy)、numpy.ndarrayからtorch.Tensorを構築する関数(torch.from_numpy)の二つがある。これらにより、データ構造の互換変換が可能。
x = np.zeros((2,2), dtype=np.float32)
y = torch.zeros((2,2), dtype=torch.float32)
torch.Tensor から numpy.ndarray への変換
type(y.numpy())
numpy.ndarray から torch.Tensor への変換
type(torch.from_numpy(x))
利点
- CPU上で言語特徴量や音響特徴量を計算したあと、Pytorchを用いてニューラルネットワークの学習にその特徴料を利用するために、numpy.ndarrayからtorch.Tensorへの変換を利用する。
- ニューラルネットワークの出力をファイルに保存するために、torch.Tensorからnumpy.ndarrayへの変換を利用する。
なお、相互変換において、データ本体のコピーは行われず、メモリが共有されることに注意が必要。
x = np.zeros((2,2), dtype=np.float32) x
y = torch.from_numpy(x) y
x[0,0] = 1.0
x
y
両者のデータ構造でメモリが共有されているため、変換元でのデータ変更は変更先にもハネ位される。
不要なデータコピーを避けるためよく用いられる。
Last-modified: 2023-12-18 (月) 19:09:43