【单层神经网络】基于MXNet库简化实现线性回归

news2025/2/3 15:48:51

写在前面

同最开始的两篇文章

完整程序及注释

'''
导入使用的库
'''
# 基本
from mxnet import autograd, nd, gluon
# 模型、网络
from mxnet.gluon import nn                     
from mxnet import init
# 学习
from mxnet.gluon import loss as gloss
# 数据集
from mxnet.gluon import data as gdata
'''
生成测试数据集
'''
# 被拟合参数
true_w = [2, -3.4]      # 特征的权重系数
true_b = 4.2            # 整体模型的偏置
# 创建训练数据集
num_inputs = 2          
num_examples = 1000
features = nd.random.normal(loc=0, scale=1, shape=(num_examples, num_inputs))  # 均值为0,标准差为1
labels = true_w[0]*features[:,0] + true_w[1]*features[:,1] + true_b
labels_noise = labels + nd.random.normal()
'''
确定模型
'''
net = nn.Sequential()                       # 声明一个Sequential容器,存放Neural Network
net.add(nn.Dense(1))                        # 向容器中添加一个全连接层,且不使用激活函数,“1”表示该全连接层的输出神经元有1个
net.initialize(init.Normal(sigma=0.01))     # 权重参数随机取自均值=0,标准差=0.01的高斯分布,bias默认=0
'''
确定学习方式
'''
loss = gloss.L2Loss()       # L2范数损失 等价于 平方损失
# .collect_params()方法获取net实例的全部参数,并提供给trainer
# 选择小批量随机梯度下降法(sgd)寻优,学习率为0.03
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.03})
'''
数据集采样
'''
batch_size = 10
dataset = gdata.ArrayDataset(features, labels_noise)        # 将标签和特征组合成完整数据集
# DataLoader返回一个迭代器,每次从数据集中提取一个长度为batch_size的子集出来
data_iter = gdata.DataLoader(dataset, batch_size, shuffle=True) # shuffle=True 打乱数据集(随机采样)
'''
开始训练
'''
num_epoch = 3       # 训练轮次
for epoch in range(0, num_epoch):
    for x, y in data_iter:          # 随机取出一组小批量,同时做到遍历
        with autograd.record():     # 自动保存梯度数据
            l = loss(net(x), y)     # 将得到的一组特征放入网络,求得到的输出与对应的标签(含噪声)的损失
        l.backward()                # 计算该次损失的梯度
        trainer.step(batch_size)    # 反向传播,基于l.backward()得到的梯度来更新模型的参数
    l = loss(net(features), labels_noise)     # 该轮训练结束后,求网络对数据集特征的输出,再求输出和含噪声标签的损失
    print('epoch %d, mean loss: %f' % (epoch+1, l.mean().asnumpy()))  # 展示训练轮次和数据集损失的平均

具体函数解释

trainer.step(batch_size):batch_size指定了当前批的大小,用于计算这次梯度下降的步长

with autograd.record():这行代码的作用是在其作用域内的计算将会被记录下来,以便自动求导

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2291336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python的那些事第五篇:数据结构的艺术与应用

新月人物传记:人物传记之新月篇-CSDN博客 目录 一、列表(List):动态的容器 二、元组(Tuple):不可变的序列 三、字典(Dict):键值对的集合 四、集合&#xf…

Linux:线程池和单例模式

一、普通线程池 1.1 线程池概念 线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价&…

【算法-位运算】位运算遍历 LogTick 算法

文章目录 1. 引入2. LogTick 优化遍历过程3. 题目3.1 LeetCode3097 或值至少为 K 的最短子数组 II3.2 LeetCode2411 按位或最大的最小子数组长度3.3 LeetCode3209 子数组按位与值为 K 的数目3.4 LeetCode3171 找到按位或最接近 K 的子数组3.5 LeetCode1521 找到最接近目标值的函…

【memgpt】letta 课程4:基于latta框架构建MemGpt代理并与之交互

Lab 3: Building Agents with memory 基于latta框架构建MemGpt代理并与之交互理解代理状态,例如作为系统提示符、工具和agent的内存查看和编辑代理存档内存MemGPT 代理是有状态的 agents的设计思路 每个步骤都要定义代理行为 Letta agents persist information over time and…

Python的那些事第九篇:从单继承到多继承的奇妙之旅

Python 继承:从单继承到多继承的奇妙之旅 目录 Python 继承:从单继承到多继承的奇妙之旅 一、引言 二、继承的概念与语法 三、单继承 四、多继承 五、综合代码示例 六、总结 一、引言 在编程的世界里,继承就像是一场神奇的魔法&#…

pandas(三)Series使用

一、Series基础使用 import pandasd {x:100,y:200,z:300} s1 pandas.Series(d) #将dict转化为Series print(s1)print("") l1 [1, 2, 3] l2 [a, b, c] s2 pandas.Series(l1, indexl2) #list转为Series print(s2)print("") s3 pandas.Series([11…

Windows电脑本地部署运行DeepSeek R1大模型(基于Ollama和Chatbox)

文章目录 一、环境准备二、安装Ollama2.1 访问Ollama官方网站2.2 下载适用于Windows的安装包2.3 安装Ollama安装包2.4 指定Ollama安装目录2.5 指定Ollama的大模型的存储目录 三、选择DeepSeek R1模型四、下载并运行DeepSeek R1模型五、使用Chatbox进行交互5.1 下载Chatbox安装包…

如何用微信小程序写春联

​ 生活没有模板,只需心灯一盏。 如果笑能让你释然,那就开怀一笑;如果哭能让你减压,那就让泪水流下来。如果沉默是金,那就不用解释;如果放下能更好地前行,就别再扛着。 一、引入 Vant UI 1、通过 npm 安装 npm i @vant/weapp -S --production​​ 2、修改 app.json …

2025最新在线模型转换工具onnx转换ncnn,mnn,tengine等

文章目录 引言最新网址地点一、模型转换1. 框架转换全景图2. 安全的模型转换3. 网站全景图 二、转换说明三、模型转换流程图四、感谢 引言 在yolov5,yolov8,yolov11等等模型转换的领域中,时间成本常常是开发者头疼的问题。最近发现一个超棒的…

算法每日双题精讲 —— 前缀和(【模板】一维前缀和,【模板】二维前缀和)

在算法竞赛与日常编程中,前缀和是一种极为实用的预处理技巧,能显著提升处理区间和问题的效率。今天,我们就来深入剖析一维前缀和与二维前缀和这两个经典模板。 一、【模板】一维前缀和 题目描述 给定一个长度为 n n n 的整数数组 a a a&…

记8(高级API实现手写数字识别

目录 1、Keras:2、Sequential模型:2.1、建立Sequential模型:modeltf.keras.Sequential()2.2、添加层:model.add(tf.keras.layers.层)2.3、查看摘要:model.summary()2.4、配置训练方法:model.compile(loss,o…

88.[4]攻防世界 web php_rce

之前做过,回顾(看了眼之前的wp,跟没做过一样) 属于远程命令执行漏洞 在 PHP 里,system()、exec()、shell_exec()、反引号()等都可用于执行系统命令。 直接访问index.php没效果 index.php?sindex/think\a…

23.Word:小王-制作公司战略规划文档❗【5】

目录 NO1.2.3.4 NO5.6​ NO7.8.9​ NO10.11​ NO12​ NO13.14 NO1.2.3.4 布局→页面设置对话框→纸张:纸张大小:宽度/高度→页边距:上下左右→版式:页眉页脚→文档网格:勾选只指定行网格✔→ 每页:…

数据结构 树1

目录 前言 一,树的引论 二,二叉树 三,二叉树的详细理解 四,二叉搜索树 五,二分法与二叉搜索树的效率 六,二叉搜索树的实现 七,查找最大值和最小值 指针传递 vs 传引用 为什么指针按值传递不会修…

玩转ChatGPT:DeepSeek测评(科研思路梳理)

一、写在前面 DeepSeek-R1出圈了,把OpenAI的o3-mini模型都提前逼上线了(还免费使用)。 都号称擅长深度推理,那么对于科研牛马的帮助有多大呢? 我连夜试一试。 二、科研思路梳理 有时候我们牛马们做了一堆结果以后&…

python学opencv|读取图像(五十三)原理探索:使用cv.matchTemplate()函数实现最佳图像匹配

【1】引言 前序学习进程中,已经探索了使用cv.matchTemplate()函数实现最佳图像匹配的技巧,并且成功对两个目标进行了匹配。 相关文章链接为:python学opencv|读取图像(五十二)使用cv.matchTemplate()函数实现最佳图像…

Linux环境下的Java项目部署技巧:安装 Mysql

查看 myslq 是否安装: rpm -qa|grep mysql 如果已经安装,可执行命令来删除软件包: rpm -e --nodeps 包名 下载 repo 源: http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm 执行命令安装 rpm 源(根据下载的…

gitea - fatal: Authentication failed

文章目录 gitea - fatal: Authentication failed概述run_gitea_on_my_pkm.bat 笔记删除windows凭证管理器中对应的url认证凭证启动gitea服务端的命令行正常用 TortoiseGit 提交代码备注END gitea - fatal: Authentication failed 概述 本地的git归档服务端使用gitea. 原来的用…

计算机网络安全与运维的关键 —— 常用端口全解析

目录 前言 常见端口分类及用途 20 端口(FTP 数据传输) 21 端口(FTP 消息控制) 22 端口(SSH) 23 端口(Telnet) 25 端口(SMTP) 53 端口(DNS&…

笔灵ai写作技术浅析(三):深度学习

笔灵AI写作的深度学习技术主要基于Transformer架构,尤其是GPT(Generative Pre-trained Transformer)系列模型。 1. Transformer架构 Transformer架构由Vaswani等人在2017年提出,是GPT系列模型的基础。它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全依赖自…