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

写在前面

同最开始的两篇文章

完整程序及注释

'''
导入使用的库
'''
# 基本
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.rhkb.cn/news/12006.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Three.js+React】教程001:绘制简单的盒子

文章目录 React整合Three.js创建项目绘制一个简单的盒子添加坐标辅助器React整合Three.js 在 React 中结合 Three.js 进行 3D 开发,可以使用 React + Three.js + @react-three/fiber 进行高效渲染,同时配合 @react-three/drei 提供的封装工具,让开发更加简洁。 创建项目 …

K8S集群架构及主机准备

本次集群部署主机分布K8S集群主机配置主机静态IP设置主机名解析ipvs管理工具安装及模块加载主机系统升级主机间免密登录配置主机基础配置完后最好做个快照备份 2台负载均衡器 Haproxy高可用keepalived3台k8s master节点5台工作节点(至少2及以上)本次集群部署主机分布 K8S集群主…

SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言

目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件: 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL(Data Definition Language):数据定义语言 1、操…

3.5.7 基于横盘结构的分析体系——缠论(背驰/背离)

背离(背驰) 本文讨论背离主要从量价和时空的角度来讨论。涉及的背离类型如下表: 角度 类型 成交量和价格 量价背离 时间和空间 MACD背离 笔背离 盘整背离 趋势背离 表1-9 背离的角度和类型。 从成交量和价格的角度,本文…

51c嵌入式~电路~合集25

我自己的原文哦~ https://blog.51cto.com/whaosoft/13241709 一、“开关电源”和“普通电源”的区别 什么叫开关电源 随着电力电子技术的发展和创新,使得开关电源技术也在不断地创新。目前,开关电源以小型、轻量和高效率的特点被广泛应用几乎所有的电…

深度学习 Pytorch 基础网络手动搭建与快速实现

为了方便后续练习的展开,我们尝试自己创建一个数据生成器,用于自主生成一些符合某些条件、具备某些特性的数据集。 导入相关的包 # 随机模块 import random# 绘图模块 import matplotlib as mpl import matplotlib.pyplot as plt# 导入numpy import nu…

【文件上传】

目录 一. 介绍二. 本地存储三. 阿里云OSS3.1 准备工作3.2 入门程序3.3 案例集成3.4 程序优化 \quad 一. 介绍 \quad 三要素缺一不可 \quad 二. 本地存储 \quad 解决相同命名覆盖问题 \quad 三. 阿里云OSS \quad \quad 3.1 准备工作 \quad \quad 3.2 入门程序 \quad \quad 3.3…

Deepseek-R1 和 OpenAI o1 这样的推理模型普遍存在“思考不足”的问题

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Vue3的el-table-column下拉输入实时查询API数据选择的实现方法

由于本人对el-table-column有下拉输入选择的要求&#xff0c;根据网上搜索的资料及本人优化&#xff0c;推出我比较满意的方法&#xff0c;供各位读者参考使用。 效果图 el-table-column写法 <el-table-columnlabel"货品编号"align"center"prop"…

Electron使用WebAssembly实现CRC-8 MAXIM校验

Electron使用WebAssembly实现CRC-8 MAXIM校验 将C/C语言代码&#xff0c;经由WebAssembly编译为库函数&#xff0c;可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-8 MAXIM格式校验的方式。 CRC-8 MAXIM校验函数WebAssembly源文件 C语言实现C…

使用 Elastic Cloud Hosted 优化长期数据保留:确保政府合规性和效率

作者&#xff1a;来自 Elastic Jennie Davidowitz 在数字时代&#xff0c;州和地方政府越来越多地承担着管理大量数据的任务&#xff0c;同时确保遵守严格的监管要求。这些法规可能因司法管辖区而异&#xff0c;通常要求将数据保留较长时间 —— 有时从一年到七年不等。遵守刑事…

安卓(android)饭堂广播【Android移动开发基础案例教程(第2版)黑马程序员】

一、实验目的&#xff08;如果代码有错漏&#xff0c;可查看源码&#xff09; 1.熟悉广播机制的实现流程。 2.掌握广播接收者的创建方式。 3.掌握广播的类型以及自定义官博的创建。 二、实验条件 熟悉广播机制、广播接收者的概念、广播接收者的创建方式、自定广播实现方式以及有…

OPENPPP2 —— VMUX_NET 多路复用原理剖析

在阅读本文之前&#xff0c;必先了解以下几个概念&#xff1a; 1、MUX&#xff08;Multiplexer&#xff09;&#xff1a;合并多个信号到单一通道。 2、DEMUX&#xff08;Demultiplexer&#xff09;&#xff1a;从单一通道分离出多个信号。 3、单一通道&#xff0c;可汇聚多个…

【Linux】从硬件到软件了解进程

个人主页~ 从硬件到软件了解进程 一、冯诺依曼体系结构二、操作系统三、操作系统进程管理1、概念2、PCB和task_struct3、查看进程4、通过系统调用fork创建进程&#xff08;1&#xff09;简述&#xff08;2&#xff09;系统调用生成子进程的过程〇提出问题①fork函数②父子进程关…

Deep Crossing:深度交叉网络在推荐系统中的应用

实验和完整代码 完整代码实现和jupyter运行&#xff1a;https://github.com/Myolive-Lin/RecSys--deep-learning-recommendation-system/tree/main 引言 在机器学习和深度学习领域&#xff0c;特征工程一直是一个关键步骤&#xff0c;尤其是对于大规模的推荐系统和广告点击率预…

AI智慧社区--Excel表的导入导出

Excel表导入导出的环境配置 1.导入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>${easypoi.version}</version></dependency>2.配置Excel的导入导出以及…

【C++】B2122 单词翻转

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 &#x1f4af;一、我的做法代码实现&#xff1a;代码解析思路分析 &#x1f4af;二、老师的第一种做法代码实现&a…

【流媒体】搭建流媒体服务器

搭建Windows Nginx服务器 搭建 下载nginx工具包解压至本地&#xff0c;并在cmd窗口中切换至nginx所在的本地目录修改 conf/nginx.conf 文件&#xff0c;更改其端口号 server中的 listen的端口号从 80改为 8080&#xff0c;因为80经常被其他服务占用&#xff0c;导致无法打开 …

编程AI深度实战:给vim装上AI

系列文章&#xff1a; 编程AI深度实战&#xff1a;私有模型deep seek r1&#xff0c;必会ollama-CSDN博客 编程AI深度实战&#xff1a;自己的AI&#xff0c;必会LangChain-CSDN博客 编程AI深度实战&#xff1a;给vim装上AI-CSDN博客 编程AI深度实战&#xff1a;火的编程AI&…

MySQL锁详解

MySQL锁详解 数据库的锁机制锁的分类行级锁与表级锁行级锁之共享锁与排他锁乐观锁与悲观锁悲观锁乐观锁 Innodb存储引擎的锁机制行级锁与表级锁的使用区分三种行锁的算法死锁的问题多版本并发控制MVCC 数据库的锁机制 什么是锁&#xff1f;锁是一种保障数据的机制 为何要用锁…