数値計算のためのPythonライブラリ

Google Colabへのリンク







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