[pytorch、学习] - 3.6 softmax回归的从零开始实现
生活随笔
收集整理的這篇文章主要介紹了
[pytorch、学习] - 3.6 softmax回归的从零开始实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考
3.6 softmax回歸的從零開始實現
import torch import torchvision import numpy as np import sys sys.path.append("..") import d2lzh_pytorch as d2l3.6.1. 獲取和讀取數據
batch_size = 256 train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)3.6.2. 初始化模型參數
num_inputs = 784 num_outputs = 10W = torch.tensor(np.random.normal(0, 0.01, (num_inputs, num_outputs)), dtype=torch.float) # torch.Size([784, 10]) b = torch.zeros(num_outputs, dtype=torch.float) # torch.Size([10])# 同之前一樣,我們需要模型參數梯度。 W.requires_grad_(requires_grad=True) b.requires_grad_(requires_grad=True)3.6.3. 實現softmax運算
def softmax(X):X_exp = X.exp()partition = X_exp.sum(dim=1, keepdim=True)return X_exp / partition3.6.4. 定義模型
# 傳入特征,給出預測值 def net(X):return softmax(torch.mm(X.view((-1, num_inputs)), W) + b)3.6.5. 定義損失函數
def cross_entropy(y_hat, y):return -torch.log(y_hat.gather(1, y.view(-1, 1)))3.6.6. 計算分類準確率
def accuracy(y_hat, y):return (y_hat.argmax(dim=1) ==y).float().mean().item()def evaluate_accuracy(data_iter, net):acc_sum, n = 0.0, 0for X, y in data_iter:acc_sum += (net(X).argmax(dim=1) == y).float().sum().item()n += y.shape[0]return acc_sum /n3.6.7. 訓練模型
- d2lzh
3.6.8. 預測
X, y = iter(test_iter).next()true_labels = d2l.get_fashion_mnist_labels(y.numpy()) pred_labels = d2l.get_fashion_mnist_labels(net(X).argmax(dim=1).numpy()) titles = [true + '\n' + pred for true, pred in zip(true_labels, pred_labels)]d2l.show_fashion_mnist(X[0:9], titles[0:9])總結
以上是生活随笔為你收集整理的[pytorch、学习] - 3.6 softmax回归的从零开始实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在STM32CubeMX生成的MDK5工
- 下一篇: 液压系统和阀的动画,让复杂工作原理看起来