PyTorchのインストールとサンプル-お試し-

pytorchのインストール

下のサイトにインストール方法が載っています。
一応、pytorchの公式サイトです。
https://pytorch.org/

私の環境では、Anacondaを使って、pytorchを入れました。
コマンドを書いときます。

conda install pytorch torchvision -c pytorch

サンプル

学習データは、sklearn.datasets.load_digitsを使用します。

サンプルコード

import torch
from torch import nn
from torch import optim
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from torch.utils.data import TensorDataset, DataLoader


digits = load_digits()

X = digits.data
y = digits.target

#学習用データとテストデータに分ける
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)

X_train = torch.tensor(X_train, dtype=torch.float32)
X_test = torch.tensor(X_test, dtype=torch.float32)
y_train = torch.tensor(y_train, dtype=torch.int64)
y_test = torch.tensor(y_test, dtype=torch.int64)

#ミニバッチ学習
ds = TensorDataset(X_train, y_train)
loader = DataLoader(ds, batch_size=32, shuffle=True)

#ネットワーク構築
net = nn.Sequential(
    nn.Linear(64, 32),
    nn.ReLU(),
    nn.Linear(32, 16),
    nn.ReLU(),
    nn.Linear(16, 10)
)

#損失関数
loss_fn = nn.CrossEntropyLoss()

#最適化
optimizer = optim.Adam(net.parameters())


train_losses = []
test_losses = []

#学習
for epoch in range(100):
    running_loss = 0.0
    for i, (XX, yy) in enumerate(loader):
        optimizer.zero_grad()
        y_pred = net(XX)
        loss = loss_fn(y_pred, yy)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
    train_losses.append(running_loss/i)
    y_pred = net(X_test)
    test_loss = loss_fn(y_pred, y_test)
    test_losses.append(test_loss.item())
    print("epoch{0}:train={1};test={2}".format(epoch+1,running_loss/i,test_loss.item()))

一応グラフ

matplotで一応lossのグラフ化をしようと思います。

%matplotlib inline
import matplotlib.pyplot as plt

plt.plot(train_losses, label="train")
plt.plot(test_losses, label="test", color="orange")
plt.legend()
plt.savefig('train_test_loss.png')
plt.show()

参考

sklearn.datasets.load_digits

おすすめ