极简pytorch-单层神经网络正向传播
2023-09-11 14:16:57 时间
首先我们来看下单层神经网络的结构
由于业内共识输入层不算层数,所以这是一个单层的神经网络
整张图对应的数学公式如下,我们知道不管是机器学习还是深度学习,主要的功能是做预测,比如我们要预测房价,有一组数据,是面积90平,房间数3,只要让90*w1+3*w2 +b就能做预测了,b是偏置,可以不要。如果让w1为100,w2为200,b为0则预测出房价为9600,我们先不管机器预测的准不准,至少它预测出来了,那为啥要用下面一堆恐怖的线性代数来表示这么简单的算法呢,主要是机器做预测都是成百上千组数据,用线性代数可以很直白的表示这种批量操作。
下面我们用代码来实现预测,通过实例化torch.nn.Linear来实现一个单层的神经网络,torch.nn.Linear的作用就是上面我说的输入数据,然后预测数据,你只需要告诉它输入的特征是几维的,输出的预测值是几维的,比如刚刚说的输入值有面积和房间数,则输入的纬度是2,预测的是房价,则输出的维度是1,如果你想预测房价和房龄,则输出维度是2,它会随机生成权重和偏置,然后给它数据就能返回预测值
import torch
torch.random.manual_seed(420) #人为设置随机数种子
X = torch.tensor([[100,3],[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为预测值
可以看到打印出来的权重是[0.4318,-0.4256],偏置是0.6730,预测出来的值是[42.5797,37,8357],
以上整个过程叫做神经网络的正向传播,你可能会说这预测的完全不靠谱吧,就是瞎猜的吧?没错,它还真是瞎猜的,后面我会讲到反向传播,到时你会见证预测值和真实值越来越接近,而这种模型通过学习数据,不断拟合旧数据从而能够预测新数据的过程,就叫做机器学习。
相关文章
- pytorch中的 requires_grad和volatile
- DL之IDE:深度学习环境安装之pytorch/torchvision版本和CUDA版本匹配(对应版本安装)、利用Pytorch查看自己电脑上CUDA版本及其相关信息之详细攻略
- jittor 和pytorch gpu 使用效率对比(惊人jittor的算力利用率是pytorch 4-5倍)
- 使用pytorch创建神经网络并解决线性拟合和分类问题
- pytorch中各个优化函数的对比
- 在pytorch中 保存 和加载神经网络
- 使用pytorch搭建 RNN线性神经网络
- DFCNN网络pytorch版本
- Pytorch实现APNB
- 【NLP】使用递归神经网络对序列数据进行建模 (Pytorch)
- 【DL with Pytorch】第 6 章 : 用循环神经网络分析数据序列
- 【DL with Pytorch】第 4 章 : 卷积神经网络
- 【DL with Pytorch】第 2 章 : 神经网络的构建块
- 【Pytorch深度学习实战】(8)双向循环神经网络(BiRNN)
- Python基于PyTorch实现BP神经网络ANN分类模型项目实战
- Pytorch——把模型的所有参数的梯度清0
- 【youcans的深度学习 08】PyTorch 数据加载和转换
- 如何将pytorch模型部署到安卓
- 【Pytorch】第 2 章 :马尔可夫决策过程和动态规划
- pytorch 24 把MMSegmentation的作为pytorch的语义分割模型库使用(已实现模型的训练与部署)
- Chapter1 深度学习Pytorch环境搭建