PyTorch 的一个简单例子

实现单层softmax二分类,输入特征维度为4,输出为2,经过softmax函数得出输入的类别概率。

代码示意:

定义网络结构;

使用SGD优化;

迭代一次,随机初始化三个样例(相当于一个Batch),每个样例四维特征,target分别为1,0,1;

前向传播,使用交叉熵计算loss;

反向传播,最后由优化算法更新权重,完成一次迭代。

import torch
import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):

    def __init__(self):
        super(Net, self).__init__()
        self.linear = nn.Linear(4, 2)

    def forward(self, input):
        out = F.softmax(self.linear(input))
        return out

net = Net()
sgd = torch.optim.SGD(net.parameters(), lr=0.001)
for epoch in range(1):
    features = torch.autograd.Variable(torch.randn(3, 4), requires_grad=True)
    target = torch.autograd.Variable(torch.LongTensor([1, 0, 1]))
    sgd.zero_grad()

    out = net(features)
    loss = F.cross_entropy(out, target)
    loss.bac

猜你喜欢

转载自blog.csdn.net/tony2278/article/details/105050757