极简pytorch-分类神经网络

上一篇我们讲到房价的预测,那如何进行分类的预测呢?比如判断一个人的信用是好还是不好,就是典型的二分类问题,手写数字识别,识别0到9就是多分类问题。

我们知道,神经网络里面输出的都是数字,二分类问题就是把这些数字转成0或1,多分类问题就是把这些数字转成0到N

这个时候我们就需要用一个函数来把输出值做映射了,下图是sigmoid函数,可以把值z映射成0或1

极简pytorch-分类神经网络_第1张图片 

import torch

torch.random.manual_seed(420) #人为设置随机数种子
X = torch.tensor([[0.1,2],[90,4]], dtype = torch.float32) #定义特征矩阵,两个特征,2组数据
#单层神经网络,由于训练数据有两个特征,所以2个输入,预测值为单个数据,1个输出
output = torch.nn.Linear(2,1)
print(output.weight)  #随机生成权重w和截距b,Linear(2,1,bias=False)则不会生成b
print(output.bias)
zhat = output(X) #zhat为预测值
torch.sigmoid(zhat) #把输出值映射成0到1,可通过判断小于0.5表示分类1,大于0.5为分类2

 类似的还有符号函数sign,也叫阶跃函数

极简pytorch-分类神经网络_第2张图片

 ReLU整流函数

极简pytorch-分类神经网络_第3张图片

极简pytorch-分类神经网络_第4张图片

 tanh双曲正切函数

极简pytorch-分类神经网络_第5张图片

极简pytorch-分类神经网络_第6张图片 上面这些函数都可以把输出值映射成二分类,先混个脸熟,在多层神经网络中,这些函数将发挥大用处

多分类的就要用到softmax函数了,计算出来数值最大的就是所属分类

 

input = torch.tensor([3, 8, 1, 16], dtype = torch.float32)
torch.softmax(input, dim=0)

 

可以看到 第四个分类数值大,所以属于分类4

 

你可能感兴趣的:(机器学习,pytorch,神经网络,分类)