NN設計2(データセット)
まず、次のimport文を先頭部分に追記する。
code:(先頭)nn.py
import torch as pt
import torch.nn.functional as F
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
データセットの取得
次のコードを追記する。
code:(追加)nn.py
dataset = load_iris() # (1) データの取得
X = pt.tensor(dataset'data', dtype=pt.float) y = pt.tensor(dataset'target', dtype=pt.int64) X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.25, random_state=42
)
y_train_onehot = F.one_hot(y_train, num_classes=3).float()
データセットの取得
配列型でデータセットに格納されている学習データと教師データを取り出しテンソルに変換
訓練用と検証用に分割
訓練用の教師データからワンホット表現を生成
PyTorchが提供する関数に対応させるため、floatメソッドによりワンホット行列を浮動小数点数にキャストしている。
各種データが正しく用意できたことの確認のためnn.pyに次のコードを追加したうえで実行する。正しく動作すればこのコードは削除する。
code:(確認用)nn.py
print('X_train:', X_train.shape)
print('X_test:', X_test.shape)
print('y_train:', y_train.shape)
print('y_test:', y_test.shape)
print('y_train_onehot:', y_train_onehot.shape)
code:結果.py
X_test: torch.Size(38, 4) y_train_onehot: torch.Size(112, 3) データローダの生成
訓練には、「訓練用の学習データ」と「訓練用の教師データのワンホット表現」を利用する。
これらを用いてデータセットdataset_trainを作り、更に、データローダdataloader_trainを生成する。
code:(追加)nn.py
# 訓練用のデータセットを生成
dataset_train = pt.utils.data.TensorDataset(X_train, y_train_onehot)
# データローダの生成
dataloader_train = pt.utils.data.DataLoader(
dataset = dataset_train,
batch_size = 10,
shuffle = True,
num_workers = 0
)
データローダーに訓練用のバッチが正しく格納されていることの確認のため、nn.pyに次のコードを追加したうえで実行する。正しく動作すればこのコードは削除する。
code:(確認用)nn.py
for X, y in dataloader_train:
print('学習データ:\n', X)
print('教師データ:\n', y)
/icons/hr.icon
※ ブラウザのバックボタンで戻る