当前位置: 首页 > news >正文

一层5x1神经网络绘制训练100轮后权重变化的图像

要完成这个任务,我们可以使用Python中的PyTorch库来建立一个简单的神经网络,网络结构只有一个输入层和一个输出层,输入层有5个节点,输出层有1个节点。训练过程中,我们将记录权重的变化,并在训练100轮后绘制出权重变化的图像。以下是步骤和代码的详细解释:

  1. 构建网络:网络由一个全连接层组成,没有激活函数,因为我们只关注权重的变化。
  2. 数据准备:随机生成一些输入数据和目标数据用于训练。
  3. 训练网络:使用均方误差损失和随机梯度下降优化器。
  4. 记录权重:在每轮训练后记录权重。
  5. 绘制权重变化图:训练完成后,使用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")

上述代码实现了一个简单的神经网络训练,并绘制了每个输入特征的权重变化。以下是代码的详细步骤分析:

  1. 导入库

    • 导入了 torchtorch.nn 用于神经网络的构建和训练。
    • 导入 matplotlib.pyplot 用于绘制图像。
  2. 定义模型

    • 定义了一个简单的线性模型 SimpleLinearModel,包含一个全连接层 linear,输入5个特征输出1个值。
  3. 初始化模型、损失函数和优化器

    • 实例化了模型 model
    • 使用均方误差损失函数 criterion,适合回归问题。
    • 使用随机梯度下降优化器 optimizer,学习率设置为0.01。
  4. 准备数据

    • 生成了随机输入数据 inputs 和目标数据 targets,分别有100个样本,输入有5个特征,输出有1个目标值。
  5. 训练过程

    • 创建一个空列表 weights_history 用于记录每轮训练后的权重。
    • 进行100轮训练,在每轮中:
      • 计算模型的输出 outputs
      • 计算损失 loss
      • 清空梯度,进行反向传播,更新权重。
      • 记录当前的权重,保存到 weights_history 中。
  6. 数据转换和绘图

    • 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中这章的要求集中在链表的基础操作中,应用题大概会出问答题。 【当前每一小节的应用题待做,先把选择题过完&#xff…...

【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…...

CLIP ViT-H-14快速部署:Docker镜像替代方案与本地Python服务对比

CLIP ViT-H-14快速部署:Docker镜像替代方案与本地Python服务对比 想快速搭建一个能看懂图片的AI服务吗?比如,你想让电脑自动给照片打标签、找相似图片,或者做个以图搜图的功能。今天要聊的CLIP ViT-H-14模型,就是干这…...

LumiPixel Canvas Quest入门:零代码玩转AI人像创作的保姆级教程

LumiPixel Canvas Quest入门:零代码玩转AI人像创作的保姆级教程 1. 开篇:艺术创作的新方式 最近遇到不少设计师朋友抱怨,想尝试AI人像创作却被复杂的代码和参数吓退。其实现在有了更简单的方式——LumiPixel Canvas Quest,一个完…...

2025最权威的五大AI辅助论文方案推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于当前这个学术写作的场景之中,挑选适宜的AI辅助平台此事能够非常显著地促使效率…...

再次革新 .NET 的构建和发布方式(三)僚

1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...

智能解锁付费内容:信息获取革命的完整解决方案

智能解锁付费内容:信息获取革命的完整解决方案 在当今数字化信息时代,你是否也曾面临优质内容被付费墙阻挡的困扰?智能解锁付费内容技术作为信息获取领域的重要突破,正在重新定义我们的阅读体验。通过创新的技术架构,这…...

高效管理博德之门3模组:BG3 Mod Manager一站式智能解决方案

高效管理博德之门3模组:BG3 Mod Manager一站式智能解决方案 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 在《博德之门3》的模组世界中…...

OpenClaw多模态扩展:千问3.5-9B处理图像与文本混合任务

OpenClaw多模态扩展:千问3.5-9B处理图像与文本混合任务 1. 为什么需要多模态任务处理 在日常工作中,我们经常会遇到需要同时处理图像和文本的场景。比如收到一份包含截图和说明的文档,或是需要从网页截图中提取关键信息。传统的工作流往往需…...

STEP3-VL-10B从零开始:Ubuntu环境部署+Gradio启动+API服务验证全流程

STEP3-VL-10B从零开始:Ubuntu环境部署Gradio启动API服务验证全流程 你是不是对多模态AI模型很感兴趣,想自己动手部署一个既能看懂图片又能和你聊天的智能助手?今天,我们就来一起搞定STEP3-VL-10B这个“小巨人”模型。 别看它只有…...

React Easy State 在 React Native 中的应用:跨平台状态管理解决方案

React Easy State 在 React Native 中的应用:跨平台状态管理解决方案 【免费下载链接】react-easy-state Simple React state management. Made with ❤️ and ES6 Proxies. 项目地址: https://gitcode.com/gh_mirrors/re/react-easy-state React Easy State…...

零基础转型AI产品经理?这份7阶段学习全攻略,助你少走两年弯路,抢占未来高薪岗位!

在AI浪潮席卷全球的今天,越来越多的人开始意识到:AI产品经理,将是未来最具竞争力的岗位之一。尤其是随着大模型(LLM)技术的爆发,一场“技术产品”的革命正在悄然上演。 很多小伙伴私信我:零基础…...