一层5x1神经网络绘制训练100轮后权重变化的图像
要完成这个任务,我们可以使用Python中的PyTorch库来建立一个简单的神经网络,网络结构只有一个输入层和一个输出层,输入层有5个节点,输出层有1个节点。训练过程中,我们将记录权重的变化,并在训练100轮后绘制出权重变化的图像。以下是步骤和代码的详细解释:
- 构建网络:网络由一个全连接层组成,没有激活函数,因为我们只关注权重的变化。
- 数据准备:随机生成一些输入数据和目标数据用于训练。
- 训练网络:使用均方误差损失和随机梯度下降优化器。
- 记录权重:在每轮训练后记录权重。
- 绘制权重变化图:训练完成后,使用matplotlib绘制权重的变化。
这张图展示了一个简单神经网络中5个权重在100轮训练过程中的变化。每条线代表一个权重值如何随着训练轮次的增加而变化。你可以看到,权重随着训练过程呈现不同程度的变化,这反映了模型在尝试适应数据的过程中权重的更新情况。
在这段代码中,weights_history[:, 0, i] 用于从存储的权重历史记录中提取特定的权重值,以便绘制。下面是这个表达式的详细分析:
-
weights_history是一个记录了每一训练轮次后模型权重的列表,该列表在每次迭代时被转换为一个PyTorch张量。这个张量的形状是[100, 1, 5]:- 第一个维度(100)代表训练轮次的数量。
- 第二个维度(1)代表输出层的节点数,这里是1,因为我们的模型是从5个输入到1个输出的线性层。
- 第三个维度(5)代表输入层的节点数,也就是权重的数量,因为我们的线性层有5个输入。
-
weights_history[:, 0, i]的分解::选择weights_history张量中所有的100个训练轮次。0选择输出层中第一个(也是唯一一个)节点的权重。i这是一个从0到4变化的索引,用于选择5个输入中的一个特定权重。
因此,当你使用 weights_history[:, 0, i],它实际上在每一训练轮次中选取一个特定的输入权重,并跟踪这个权重是如何随着时间变化的。在上面的代码中,这种方式被用来绘制每个输入对应权重随训练轮次变化的图形,展示了每个权重如何随着模型训练进行而更新。
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np# 定义一个简单的线性模型
class SimpleLinearModel(nn.Module):def __init__(self):super(SimpleLinearModel, self).__init__()self.linear = nn.Linear(5, 1) # 5个输入节点,1个输出节点def forward(self, x):return self.linear(x)# 生成一些随机数据
inputs = torch.randn(100, 5) # 100个样本,每个样本5个特征
targets = torch.randn(100, 1) # 100个目标值 # 初始化模型
model = SimpleLinearModel()# 损失函数和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)# 用于记录权重的列表
weights_history = []# 训练模型
for epoch in range(100): # 训练100轮# 前向传播outputs = model(inputs)loss = criterion(outputs, targets)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()# 记录权重weights_history.append(model.linear.weight.data.numpy().copy())# 转换为numpy数组
weights_history = np.array(weights_history)# 创建subplot
fig, axs = plt.subplots(5, 1, figsize=(10, 15))
for i in range(5): # 对于5个输入特征的每一个权重绘图axs[i].plot(weights_history[:, 0, i], label=f'Weight {i+1}')axs[i].set_title(f'Weight {i+1} Changes Over 100 Epochs')axs[i].set_xlabel('Epoch')axs[i].set_ylabel('Weight Value')axs[i].legend()plt.tight_layout()
plt.savefig("test")
上述代码实现了一个简单的神经网络训练,并绘制了每个输入特征的权重变化。以下是代码的详细步骤分析:
-
导入库:
- 导入了
torch和torch.nn用于神经网络的构建和训练。 - 导入
matplotlib.pyplot用于绘制图像。
- 导入了
-
定义模型:
- 定义了一个简单的线性模型
SimpleLinearModel,包含一个全连接层linear,输入5个特征输出1个值。
- 定义了一个简单的线性模型
-
初始化模型、损失函数和优化器:
- 实例化了模型
model。 - 使用均方误差损失函数
criterion,适合回归问题。 - 使用随机梯度下降优化器
optimizer,学习率设置为0.01。
- 实例化了模型
-
准备数据:
- 生成了随机输入数据
inputs和目标数据targets,分别有100个样本,输入有5个特征,输出有1个目标值。
- 生成了随机输入数据
-
训练过程:
- 创建一个空列表
weights_history用于记录每轮训练后的权重。 - 进行100轮训练,在每轮中:
- 计算模型的输出
outputs。 - 计算损失
loss。 - 清空梯度,进行反向传播,更新权重。
- 记录当前的权重,保存到
weights_history中。
- 计算模型的输出
- 创建一个空列表
-
数据转换和绘图:
- 将
weights_history转换为numpy数组,以便于处理。 - 使用
plt.subplots创建5个子图,每个子图显示一个输入特征的权重变化。 - 遍历每个输入特征的权重数据,绘制在相应的子图上:
axs[i].plot(...)绘制第i个输入特征的权重变化曲线。- 设置子图的标题、坐标轴标签和图例。
- 使用
plt.tight_layout()使子图布局紧凑整齐。 - 显示绘制好的图像。
- 将
每个子图显示了对应输入特征的权重在100轮训练中的变化情况。这种细分展示方法有助于观察每个权重如何随着训练过程逐步调整和收敛。

相关文章:
一层5x1神经网络绘制训练100轮后权重变化的图像
要完成这个任务,我们可以使用Python中的PyTorch库来建立一个简单的神经网络,网络结构只有一个输入层和一个输出层,输入层有5个节点,输出层有1个节点。训练过程中,我们将记录权重的变化,并在训练100轮后绘制…...
Project #0 - C++ Primer
知识点 1.pragma once C和C中的一个非标准但广泛支持的预处理指令,用于使当前源文件在单次编译中只被包含一次。 #pragma once class F {}; // 不管被导入多少次,只处理他一次2.explicit C中的一个关键字,它用来修饰只有一个参数的类构造函…...
git提交commit信息规范,fix,feat
可以确保团体合作中,从你的提交记录可以识别出你的动作 feat:新功能(featuer)fix: 修补bugdocs: 文档(documentation)style:格式(修改样式,不影响代码运行的…...
服务器 Linux 的文件系统初探
好久没更新文章了,最近心血来潮,重新开始知识的累计,做出知识的沉淀~ 万事万物皆文件 文件系统:操作系统如何管理文件,内部定义了一些规则或者定义所以在 Linux 中所有的东西都是以文件的方式进行操作在 Linux 中&am…...
关于Unity转微信小程序的流程记录
1.准备工作 1.unity微信小程序转换工具,minigame插件,导入后工具栏出现“微信小游戏" 2.微信开发者工具稳定版 3.MP微信公众平台申请微信小游戏,获得游戏appid 4.unity转webgl开发平台,Player Setting->Other Setting…...
AI入门指南:什么是人工智能、机器学习、神经网络、深度学习?
文章目录 一、前言二、人工智能(AI)是什么?起源概念人工智能分类人工智能应用 三、机器学习是什么?概念机器学习常见算法机器学习分类机器学习与人工智能的关系 四、神经网络是什么?概念神经网络组成部分神经网络模型神经网络和机器学习的关系…...
网络安全中的IOC是指的什么?
网络安全中的IOC(Indicators of Compromise)指的是威胁指标,是网络安全领域中的一个重要概念。它指的是可以用来识别计算机系统、网络或应用程序中已经受到攻击或遭受威胁的特定特征。这些特征可以是恶意文件、恶意域名、已知攻击工具等&…...
掌握AJAX技术:从基础到实战
文章目录 **引言****1. 什么是AJAX?****2. AJAX的工作原理**AJAX 示例使用 Fetch API 实现 AJAX **3. 如何在项目中使用AJAX****4. 处理AJAX请求的常见问题****5. AJAX与JSON的结合****6. 使用AJAX框架和库****7. 实战:创建一个动态表单****8. AJAX中的事…...
Unity UGUI 实战学习笔记(6)
仅作学习,不做任何商业用途 不是源码,不是源码! 是我通过"照虎画猫"写的,可能有些小修改 不提供素材,所以应该不算是盗版资源,侵权删 因为注册和登录面板的逻辑与数据存储方面已经相对完善 服务器面板逻辑…...
iOS面试之属性关键字(二):常见面试题
Q:ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些? 对应基本数据类型默认关键字是:atomic,readwrite,assign 对于普通的 Objective-C 对象:atomic,readwrite,strong Q:atomic 修饰的属性是怎么样保存线程安全的&#x…...
java开发设计模式详解
目录 一、概述 1. 创建型模式(5种) 2. 结构型模式(7种) 3. 行为型模式(11种) 二、代码示例说明 1.单例模式(Singleton) 2.工厂方法模式(Factory Method) 3.抽象工厂模式(Abstract Factory) 4.建造者模式(Builder) 5.原型模式 (Prototype) 6.适…...
windows中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换(保姆级教程,值得收藏)
前言 在工作中,我们可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,nvm就是为…...
测试面试宝典(四十四)—— APP测试和web测试有什么区别?
一、系统架构和运行环境 APP 测试需要考虑不同的操作系统(如 iOS、Android 等)、设备型号和屏幕尺寸,以及各种网络连接状态(如 2G、3G、4G、WiFi 等)。而 Web 测试主要针对不同的浏览器(如 Chrome、Firefo…...
力扣高频SQL 50题(基础版)第三十七题
文章目录 力扣高频SQL 50题(基础版)第三十七题176.第二高的薪水题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题(基础版)第三十七题 176.第二高的薪水 题目说明 Employee 表: ----------------- …...
web基础之CSS
web基础之CSS 文章目录 web基础之CSS一、CSS简介二、基本用法2、CSS应用方式2.1 行内样式2.2内部样式2.3外部样式 三、选择器1、标签选择器2、类选择器3、ID选择器4、选择器的优先级 四、常见的CSS属性1、字体属性2、文本属性3、背景属性4、表格属性5、盒子模型的属性6、定位 总…...
全球轻型卡车胎市场规划预测:2030年市场规模将接近1153亿元,未来六年CAGR为2.0%
一、引言 随着全球物流行业的持续发展,轻型卡车胎作为物流运输的关键消耗品,其市场重要性日益凸显。本文旨在探索轻型卡车胎行业的发展趋势、潜在商机及其未来展望。 二、市场趋势 全球轻型卡车胎市场的增长主要受全球物流行业增加、消费者对轮胎性能要…...
8.2 数据结构王道复习 2.3.3 2.3.7选择题错题review
王道中这章主讲了线性表的定义、基本操作、顺序表示、链式表示。下方内容主分了文字部分和代码部分,便于记忆和整理。 在901中这章的要求集中在链表的基础操作中,应用题大概会出问答题。 【当前每一小节的应用题待做,先把选择题过完ÿ…...
【DL】神经网络与机器学习基础知识介绍(二)【附程序】
原文:https://mengwoods.github.io/post/dl/009-dl-fundamental-2/ 文章目录 激活函数卷积神经网络超参数其他程序 激活函数 激活函数的目的是在模型中引入非线性,使网络能够学习和表示数据中的复杂模式。列出常见的激活函数。 线性函数: y…...
6万字嵌入式最全八股文面试题大全及参考答案(持续更新)
目录 冒泡排序算法的平均时间复杂度和最坏时间复杂度分别是多少?在什么情况下使用冒泡排序较为合适? 选择排序算法是稳定的排序算法吗?为什么? 插入排序在近乎有序的数组中表现如何?为什么? 快速排序的基本思想是什么?它在最坏情况下的时间复杂度是多少? 归并排序…...
iceberg 用户文档(持续更新)
iceberg 用户文档 表 Schema 变更查看表的元数据信息表参数变更 表 Schema 变更 Iceberg 支持使用 Alter table … alter column 语法对 Schema 进行变更,示例如下 -- spark sql -- 更改字段类型 ALTER TABLE prod.db.sample ALTER COLUMN measurement TYPE doubl…...
Copilot Next 工作流配置不踩坑,深度解析YAML Schema校验机制、Context Token 限制与上下文注入失效根因,2024最新版避坑手册
更多请点击: https://intelliparadigm.com 第一章:Copilot Next 工作流配置全景概览 Copilot Next 是 GitHub 官方推出的下一代智能协作引擎,深度集成于 VS Code、JetBrains IDEs 及 GitHub Actions 运行时中。其工作流配置以 YAML 驱动&…...
混凝土细观压缩损伤模型ABAQUS初学指南:模型文件与讲解视频
混凝土细观压缩损伤模型ABAQUS,适合刚接触ABAQUS软件的初学者学习,包括模型文件与讲解视频 可以和文献一并发打开ABAQUS看着满屏的英文界面发懵?别慌,咱们今天用混凝土压缩损伤模型带你快速上手。这玩意儿虽然名字听着高大上&…...
Tvheadend电视服务器完整配置指南:从零搭建到高效部署
Tvheadend电视服务器完整配置指南:从零搭建到高效部署 【免费下载链接】tvheadend Tvheadend is the leading TV streaming server for Linux with ATSC, DVB-C/C2, DVB-S/S2, DVB-T/T2, IPTV, SAT>IP and unix pipe input sources 项目地址: https://gitcode.…...
终极极域电子教室解锁指南:3分钟重获电脑控制权
终极极域电子教室解锁指南:3分钟重获电脑控制权 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 还在为极域电子教室的全屏控制而烦恼吗?JiYuTrainer是一款…...
Python Scrapy 入门教程:从零学会抓取和解析网页数据
Python Scrapy 入门教程:从零学会抓取和解析网页数据 很多 Python 初学者学完基础语法后,都会遇到一个很实际的问题:怎么把网页里的数据稳定地提取下来,变成自己能处理的结构化数据? 如果你只是偶尔抓一个页面&#…...
别再死记硬背DP公式了!用‘分苹果’的思路,5分钟搞懂‘数的划分’(附NOIP真题解析)
用‘分苹果’的思维破解动态规划:数的划分问题实战指南 每次看到动态规划的状态转移方程,是不是总有一种“这公式是怎么蹦出来的”困惑?尤其是面对经典的“数的划分”问题时,那些抽象的dp[i][j]定义和递推关系,简直像天…...
Ollama GUI深度解析:构建现代本地大语言模型交互界面的架构实践指南
Ollama GUI深度解析:构建现代本地大语言模型交互界面的架构实践指南 【免费下载链接】ollama-gui A Web Interface for chatting with your local LLMs via the ollama API 项目地址: https://gitcode.com/gh_mirrors/ol/ollama-gui Ollama GUI是一款基于Vue…...
3分钟掌握Wox:跨平台效率启动器的完整使用指南
3分钟掌握Wox:跨平台效率启动器的完整使用指南 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox Wox是一款功能强大的跨平台启动器工具,能够快速搜索应用程序、文件、文件夹等…...
还在为Navicat试用期烦恼?这个工具让你告别14天限制
还在为Navicat试用期烦恼?这个工具让你告别14天限制 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 想象一下这样…...
Space Thumbnails:彻底解决Windows资源管理器3D模型预览难题的终极方案
Space Thumbnails:彻底解决Windows资源管理器3D模型预览难题的终极方案 【免费下载链接】space-thumbnails Generates preview thumbnails for 3D model files. Provide a Windows Explorer extensions that adds preview thumbnails for 3D model files. 项目地址…...
