Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >最简单的神经网络实战

最简单的神经网络实战

作者头像
福贵
发布于 2021-03-09 10:24:27
发布于 2021-03-09 10:24:27
68800
代码可运行
举报
文章被收录于专栏:合集合集
运行总次数:0
代码可运行

最简单的神经网络

准备训练数据

随机生成50个数据,用作训练数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = np.linspace(1, 100)

最简单的神经网络拟合,y=ax+b,所有设置y为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
y = 2 * x + 3

不过,为了符合实际情况,可用适当增加一些噪声。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
noise = torch.randn(50)y = 2 * x + 3+noise.numpy()

绘制x,y的图象如下

构建神经网络

torch里面可以基于nn.Module类写自己的神经网络,这里使用最简单的线性层。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class nn(nn.Module):    def __init__(self, in_features=1, mid_features=5, out_features=1):        super(nn, self).__init__()        self.layer1 = nn.Linear(in_features, mid_features)        self.layer2 = nn.Linear(mid_features, out_features)        self.layer = nn.Linear(mid_features, mid_features)    def forward(self, x):        x = self.layer2(x)        for i in range(1):            x = self.layer(x)        x = self.layer2(x)        return x

之后则是设置损失函数,优化器,依旧选择最简单的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
criterion = nn.L1Loss()optimizer = optim.RMSprop(model.parameters())

其中L1形式的损失函数就在lasso loss,$loss=(y-X\theta)+C|\theta|$。RMSProp算法的全称叫 Root Mean Square Prop。考虑到训练时1-100,那么预测则选取50-150。迭代计算,结果如下:

全部代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = np.linspace(1, 100)noise = torch.randn(50)y = 2 * x + 3+noise.numpy()plt.plot(x, y)plt.show()dataset = []for i, j in zip(x, y):    dataset.append([i, j])epochs = 10model = Nn(1, 1)criterion = nn.L1Loss()optimizer = optim.RMSprop(model.parameters())dataset = torch.tensor(dataset, dtype=torch.float, requires_grad=True)for times in range(epochs):    for i, data in enumerate(dataset, 0):        x, label = data        optimizer.zero_grad()        out = model(x.unsqueeze(dim=0))        loss = criterion(out, label.unsqueeze(dim=0))        print("loss:", loss.data.item())        loss.backward()        optimizer.step()x = np.linspace(50, 150)y = 2 * x + 3dataset = []for i, j in zip(x, y):    dataset.append([i, j])dataset = torch.tensor(dataset, dtype=torch.float, requires_grad=True)pred_y = []pred_x = xfor i, data in enumerate(dataset, 0):    x, label = data    optimizer.zero_grad()    out = model(x.unsqueeze(dim=0))    pred_y.append(out)plt.plot(pred_x, pred_y)print(pred_x, pred_y)plt.show()

有时间给出最简单神经网络的解析

tex无法解析的问题下个版本解决

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与MySQL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
神经网络以及简单的神经网络模型实现
下面是一个使用PyTorch构建简单线性回归的神经网络示例代码。这个示例展示了如何定义一个具有一个隐藏层的前馈神经网络,并训练它来逼近一些随机生成的数据点。
用户11315985
2024/10/16
1260
神经网络以及简单的神经网络模型实现
深度学习 | 《深度学习入门之PyTorch》阅读笔记
KDD(knowledge discovery in database),从数据中获取有意义的信息
Justlovesmile
2021/12/14
1.5K0
深度学习 | 《深度学习入门之PyTorch》阅读笔记
保姆级教程,用PyTorch搭一个神经网络
我们的数据集包含来自多个澳大利亚气象站的每日天气信息。本次目标是要回答一个简单的问题:明天会下雨吗?
算法进阶
2022/06/02
2.6K0
保姆级教程,用PyTorch搭一个神经网络
03-使用PyTorch处理最简单的神经网络分类任务(笔记+代码)
分类和回归是最常见的机器学习问题类型之一。在本笔记中,我们将使用 PyTorch 解决几个不同的分类问题(二元分类,多类分类,多标签分类)。换句话说,我们通过获取一组输入并预测这些输入集属于哪个类别。
renhai
2023/11/24
4.9K0
03-使用PyTorch处理最简单的神经网络分类任务(笔记+代码)
PyTorch 2.2 中文官方教程(三)
介绍 || 张量 || 自动微分 || 构建模型 || TensorBoard 支持 || 训练模型 || 模型理解
ApacheCN_飞龙
2024/02/05
4480
PyTorch 2.2 中文官方教程(三)
【机器学习实战】从零开始深度学习(通过GPU服务器进行深度学习)
0.1. 利用GPU加速深度学习   疫情期间没有办法用实验室的电脑来跑模型,用领取的腾讯云实例来弄刚刚好。发现如果没有GPU来跑的话真的是太慢了,非常推荐利用GPU加速深度学习的训练速度。     如果采用GPU的话,训练函数train_model(*)中数据的输入要改变一下,也就是需要将数据放在GPU上
汉堡888
2022/05/03
8.7K0
【机器学习实战】从零开始深度学习(通过GPU服务器进行深度学习)
解密卷积神经网络
,尤其在计算机视觉领域表现突出。其核心设计灵感来源于生物视觉系统的层次化信息处理机制。
VyrnSynx
2025/01/26
1350
PyTorch 60分钟入门系列之神经网络
前面的学习大致了解了autograd,nn依赖于autograd来定义模型并进行求导。一个nn.Module包含多个神经网络层,以及一个forward(input)方法来返回output。
AI异构
2020/07/29
4740
PyTorch 60分钟入门系列之神经网络
pytorch中的非线性回归
简介:非线性回归是指因变量(目标输出)与自变量(特征输入)之间的关系不是线性的情况。与线性回归不同,非线性回归中因变量与自变量之间的关系可能是曲线状的,可以是多项式关系、指数关系、对数关系等。在非线性回归中,模型的拟合函数通常不是线性的,因此需要使用其他方法来拟合数据。
GeekLiHua
2025/01/21
1540
pytorch中的非线性回归
PyTorch的简单实现
PyTorch 的关键数据结构是张量,即多维数组。其功能与 NumPy 的 ndarray 对象类似,如下我们可以使用 torch.Tensor() 创建张量。如果你需要一个兼容 NumPy 的表征,或者你想从现有的 NumPy 对象中创建一个 PyTorch 张量,那么就很简单了。
代码的路
2022/06/18
2K0
PyTorch的简单实现
Simple RNN时间序列预测
首先分析一下,假设我们一次输入50个点,batch设为1,每个点就一个值,所以input的shape就是[50, 1, 1],这里我们换一种表示形式,把batch放在前面,那么shape就是[1, 50, 1],可以这么理解这个shape,1条曲线,一共有50个点,每个点都是1个实数
mathor
2020/02/17
9540
Pytorch 前反馈:在神经网络训练中降低损失
在 PyTorch 界里,构建神经网络的神器就是 torch.nn 包。这个包是大脑的搭建工坊,提供无限可能 ✨
掘金安东尼
2024/04/12
2290
Pytorch 前反馈:在神经网络训练中降低损失
从零开始学习 PyTorch:多层全连接神经网络
本文引自博文视点新书《深度学习入门之PyTorch》第3 章——多层全连接神经网络 内容提要:深度学习如今已经成为科技领域最炙手可热的技术,在《深度学习入门之PyTorch》中,我们将帮助你入门深度学习。《深度学习入门之PyTorch》将从机器学习和深度学习的基础理论入手,从零开始学习 PyTorch,了解 PyTorch 基础,以及如何用 PyTorch 框架搭建模型。通过阅读《深度学习入门之PyTorch》,你将学到机器学习中的线性回归和 Logistic 回归、深度学习的优化方法、多层全连接神经
AI科技大本营
2018/04/27
5.6K0
从零开始学习 PyTorch:多层全连接神经网络
【小白学习PyTorch教程】四、基于nn.Module类实现线性回归模型
大多数情况下创建一个继承自 Pytorch 中的 nn.Module 的类,这样可以使用 Pytorch 提供的许多高级 API,而无需自己实现。
润森
2022/08/18
4030
【小白学习PyTorch教程】四、基于nn.Module类实现线性回归模型
PyTorch-24h 01_PyTorch深度学习流程
以学习一条直线y=ax+b为例演示PyTorch深度学习流程。末尾(第6节)有完整代码。笔记写的比较简单,详细的Notebook见24小时入门PyTorch深度学习。
一只大鸽子
2023/02/24
3950
PyTorch-24h  01_PyTorch深度学习流程
基于卷积神经网络的垃圾分类
自今年7月1日起,上海市将正式实施 《上海市生活垃圾管理条例》。垃圾分类,看似是微不足道的“小事”,实则关系到13亿多人生活环境的改善,理应大力提倡。
云微
2023/02/11
9390
基于卷积神经网络的垃圾分类
【深度学习】翻译:60分钟入门PyTorch(三)——神经网络
原文翻译自:Deep Learning with PyTorch: A 60 Minute Blitz
黄博的机器学习圈子
2021/02/12
7410
PyTorch使用------模型的定义和保存方法(带你讯速掌握构建线性回归,保存模型的方法!!!)
前面我们使用手动的方式来构建了一个简单的线性回归模型,如果碰到一些较大的网络设计,手动构建过于繁琐。所以,我们需要学会使用 PyTorch 的各个组件来搭建网络。
小言从不摸鱼
2024/09/10
2160
PyTorch使用------模型的定义和保存方法(带你讯速掌握构建线性回归,保存模型的方法!!!)
【前沿】Pykan风靡GitHub,近万收藏的含金量到底如何
近期,技术圈被一个名为Pykan的项目彻底点燃,其在GitHub上的关注度火箭般攀升,逼近万星大关,引得无数开发者侧目
用户11172986
2024/06/20
2910
【前沿】Pykan风靡GitHub,近万收藏的含金量到底如何
快速入门PyTorch(2)--如何构建一个神经网络
在 PyTorch 中 torch.nn 专门用于实现神经网络。其中 nn.Module 包含了网络层的搭建,以及一个方法-- forward(input) ,并返回网络的输出 outptu .
kbsc13
2019/08/16
4690
推荐阅读
相关推荐
神经网络以及简单的神经网络模型实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档