経済統計の使い方
統計初心者向けに、データや分析手法の解説をしています。「まとめページ」をご覧くだされば、全体的な内容がわかると思います。
python

【Python】テンソルの操作(Pytorch)

深層学習に使うテンソルの操作について解説します。

RNNやLSTMでテンソルを使う場合、3次元のデータにします。0次元目がサンプル、1次元目が時刻、3次元目が特徴量を表します。

通常の深層学習では、2次元データを使いますが、時系列データを使うため、一つのサンプルに複数の時刻のデータが必要になるということです。

経済統計の使い方では、統計データの入手法から分析法まで解説しています。

【R】Rのまとめ 経済統計の使い方では、統計データの入手法から分析法まで解説しています。 https://officekaisuiyoku.com...

テンソルとは

テンソルは、Numpyのarray、Pandasのデータフレームなどと並んで、Pytorchで使われるデータ形式です。データフレームは2次元の表形式ですが、arrayとpytochは3次元以上の次元にも対応しています。

また、arrayは数値の集まりですが、pytorchはGPUの使用や自動微分などの機能も備わっています。

データフレームには変数名がつけられますが、テンソルには変数名はつけられません。

データ構造説明
array多次元
データフレーム2次元
テンソル多次元

テンソルの作成

テンソルを作成する方法はnumpyのarrayと同じです。

3次元テンソルの場合

import torch

# 1次元テンソル(ベクトル)
t1 = torch.tensor([1.0, 2.0, 3.0])

# 2次元テンソル(行列)
t2 = torch.tensor([[1, 2], [3, 4]])

#3次元テンソル
t3 = torch.tensor([
    [[1, 2, 3],
     [4, 5, 6]],
     
    [[7, 8, 9],
     [10, 11, 12]]
])

print(t1)
print(t2)
print(t3)
出力
tensor([1., 2., 3.])
tensor([[1, 2],
        [3, 4]])
tensor([[[ 1,  2,  3], 
         [ 4,  5,  6]],

        [[ 7,  8,  9],
         [10, 11, 12]]])

データフレームでは、行がサンプルの数、列が変数を表します。

RNNやLSTMでは、3次元テンソルが基本で、[サンプル数, 時間ステップ数, 特徴量数]を表します。上の例では、サンプル数が2,時間ステップも2,特徴量が3つあることになります。1ステップ目の特徴量は1,2,3と4,5,6の2期間、特徴量はそれぞれ3つということになります。

tensor([[[ 1,  2,  3],  #サンプル1,時刻1の特徴量
         [ 4,  5,  6]], #サンプル1、時刻2の特徴量

        [[ 7,  8,  9], #サンプル2、時刻1の特徴量
         [10, 11, 12]]]) #サンプル2、時刻2の特徴量

多次元要素の取り出し方

テンソルをt3とすると、t3[1,2,3]などとあらわすことで、0次元目の2番目のデータ、1次元目の3番目のデータ、2次元目の4番目のデータを指定することができます。

また、t3[1]は、1次元目以降は全データを表すという意味で、t3[1,:,:]と同じ意味を表します。

データの変形

データの次元を変えるには、viewメソッドを使います。

2次元データの場合、view(-1,1)とすると、1列のデータが取り出せます。-1は自動的に計算されます。

import torch

# 2次元テンソル(行列)
t2 = torch.tensor([[1, 2,3], [4,5,6]])

t1=t2.view(-1,1)

print(t1)

出力
tensor([[1],
        [2],
        [3],
        [4],
        [5],
        [6]])


COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA