动手学深度学习PyTorch(四):多层感知机

import torch 
import numpy as np
import sys
sys.path.append('../..')
import d2lzh_pytorch as d2l

## step 1.获取数据
batch_size = 256
train_iter,test_iter = d2l.load_data_fashion_mnist(batch_size)

## step 2.定义参数
num_inputs,num_outputs,num_hiddens = 784, 10, 256

W1 = torch.tensor(np.random.normal(0,0.01,(num_inputs,num_hiddens)),dtype=torch.float)
b1 = torch.zeros(num_hiddens,dtype=torch.float)
W2 = torch.tensor(np.random.normal(0,0.01,(num_hiddens,num_outputs)),dtype=torch.float)
b2 = torch.zeros(num_outputs,dtype=torch.float)

params = [W1,b1,W2,b2]
for param in params:
    param.requires_grad_(requires_grad=True)

## step 3.定义激活函数
def relu(x):
    return torch.max(input=X,other=torch.tensor(0.0))

## step 4.定义模型
def net(X):
    X = X.view(-1,num_inputs)
    H = relu(torch.matmul(X,W1)+b1)
    return torch.matmul(H,W2) + b2

## step 5.定义损失函数
loss = torch.nn.CrossEntropyLoss()

num_epochs, lr = 5, 100.0
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, params, lr)

简介实现

import torch
from torch import nn
from torch.nn import init
import numpy as np
import sys
sys.path.append("../..") 
import d2lzh_pytorch as d2l

num_inputs, num_outputs, num_hiddens = 784, 10, 256
    
net = nn.Sequential(
        d2l.FlattenLayer(),
        nn.Linear(num_inputs, num_hiddens),
        nn.ReLU(),
        nn.Linear(num_hiddens, num_outputs), 
        )

for params in net.parameters():
    init.normal_(params, mean=0, std=0.01)
    
batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
loss = torch.nn.CrossEntropyLoss()

optimizer = torch.optim.SGD(net.parameters(), lr=0.5)

num_epochs = 5
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, None, None, optimizer)

猜你喜欢

转载自blog.csdn.net/u013010473/article/details/125803080
今日推荐