zoukankan      html  css  js  c++  java
  • pytorch(十七):多层感知机全连接曾

    一、全连接层用pytorch定义

     二、MLP举例

     

     三、具体代码

    class MLP(nn.Module):
        def __init__(self):
            super(MLP,self).__init__()
            
            self.model = nn.Sequential(
                nn.Linear(784,200),
                nn.ReLU(inplace = True),
                nn.Linear(200,200),
                nn.ReLU(inplace = True),
                nn.Linear(200,10),
                nn.ReLU(inplace = True)
            )
            
        def forward(self,x):
            x = self.model(x)
            
            return x
    
    epochs = 3
    learning_rate = 1e-2
    batch_size = 64
    
    
    train_loader = torch.utils.data.DataLoader(torchvision.datasets.MNIST('datasets/mnist_data',
                    train=True,
                    download=True,
                    transform=torchvision.transforms.Compose([
                    torchvision.transforms.ToTensor(),                       # 数据类型转化
                    torchvision.transforms.Normalize((0.1307, ), (0.3081, )) # 数据归一化处理
        ])), batch_size=batch_size,shuffle=True)
    
    test_loader = torch.utils.data.DataLoader(torchvision.datasets.MNIST('datasets/mnist_data/',
                    train=False,
                    download=True,
                    transform=torchvision.transforms.Compose([
                    torchvision.transforms.ToTensor(),
                    torchvision.transforms.Normalize((0.1307, ), (0.3081, ))
        ])),batch_size=batch_size,shuffle=False)
    
    
    net = MLP()
    optimizer = optim.SGD(net.parameters(),lr = learning_rate)
    criteon = nn.CrossEntropyLoss()
    
    for epoch in range(epochs):
        for batch_idx,(data,target) in enumerate(train_loader):
            data = data.view(-1,28*28)
            logits = net(data)
            loss= criteon(logits,target)
            
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
    
            if batch_idx % 100 == 0:
                print('Train Epoch: {} [{}/{} ({:.0f}%)]	Loss: {:.6f}'.format(
                    epoch, batch_idx * len(data), len(train_loader.dataset),
                           100. * batch_idx / len(train_loader), loss.item()))
    
    
        test_loss = 0
        correct = 0
        for data, target in test_loader:
            data = data.view(-1, 28 * 28)
            logits = net(data)
            test_loss += criteon(logits, target).item()
    
            pred = logits.data.max(1)[1]
            correct += pred.eq(target.data).sum()
    
        test_loss /= len(test_loader.dataset)
        print('
    Test set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)
    '.format(
            test_loss, correct, len(test_loader.dataset),
            100. * correct / len(test_loader.dataset)))
  • 相关阅读:
    洛谷 P6599 「EZEC-2」异或 题解
    线段树懒标记以及标记永久化的两种实现方法(模板)
    洛谷P3834 【模板】可持久化线段树 1 题解
    Codeforces 1012B Chemical table (思维+二分图)
    HDU 6386 Age of Moyu (最短路+set)
    CodeForces 739B Alyona and a tree (二分+树上差分)
    Codeforces 444C DZY Loves Colors (线段树)
    HDU 5441 Travel (离线dsu)
    Codeforces 1000E We Need More Bosses (边双连通+最长链)
    CodeForces 219D Choosing Capital for Treeland (树形DP)经典
  • 原文地址:https://www.cnblogs.com/zhangxianrong/p/14026522.html
Copyright © 2011-2022 走看看