#author("2023-12-18T19:04:15+09:00","default:ryutarodayo1234","ryutarodayo1234") #author("2023-12-18T19:09:43+09:00","default:ryutarodayo1234","ryutarodayo1234") *数値計算のためのPythonライブラリ RIGHT:[[Google Colabへのリンク>https://drive.google.com/file/d/1CrzHZRy_cUyWLqWIyeLLYDsPGk48m8tN/view?usp=sharing]] ~ ~ #contents ~ ~ **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 = 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 両者のデータ構造でメモリが共有されているため、変換元でのデータ変更は変更先にもハネ位される。 不要なデータコピーを避けるためよく用いられる。 ~ ~