实现单层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