自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 资源 (5)
  • 收藏
  • 关注

原创 手撕 LSTM:用 NumPy 从零实现 LSTM 前向传播

LSTM(Long Short-Term Memory)是深度学习中处理序列数据的经典模型。虽然现在 Transformer 风头正盛,但 LSTM 仍然是理解序列建模的基石,面试中也是常客。很多人用 PyTorch 的nn.LSTMLSTM 内部到底有几个门?每个门的作用是什么?权重矩阵的形状是怎样的?为什么是这个形状?遗忘门和输入门是怎么配合工作的?可能就答不上来了。本文将带你用 NumPy 手撕 LSTM 的前向传播过程,并与 PyTorch 的结果进行对比验证。

2025-12-05 21:12:04 1139

原创 PyTorch 损失函数与激活函数的正确组合

你是否遇到过这些困惑?为什么用了手动加Softmax,结果 loss 不降反升?BCELoss和到底有什么区别?多分类和多标签分类,损失函数该怎么选?target 到底该传索引还是 one-hot?如果你也被这些问题困扰过,那这篇文章就是为你准备的。本文将从原理到实践,用数据流图 + 数学公式 + 代码示例三位一体的方式,彻底讲清楚 PyTorch 中损失函数与激活函数的搭配规则。根据任务类型,快速选择正确的损失函数理解每种损失函数的内部计算过程避开常见的踩坑点。

2025-12-05 17:04:40 763

原创 从零快速学习RNN:循环神经网络完全指南

循环神经网络(Recurrent Neural Network, RNN)作为深度学习领域处理序列数据的基石性架构,在自然语言处理、语音识别、时间序列预测等众多任务中发挥着不可替代的作用。本文从传统神经网络的局限性出发,系统阐述RNN的设计动机、核心机制、数学原理及训练方法,并通过详实的代码示例和可视化分析,帮助读者建立对RNN的完整认知体系。全文涵盖RNN的理论基础、结构设计、前向传播、反向传播算法(BPTT)、梯度问题的成因与解决方案,以及工程实践中的优化技巧,为深入学习LSTM、GRU等高级变体奠定坚

2025-10-29 17:08:09 1256

原创 机器学习中的数学——线性回归

今天简单聊聊线性回归。听到这个名字,你可能觉得:"不就是画条直线吗?高中数学都学过。"但真相是——线性回归看起来平平无奇,其实是整个现代统计学和机器学习的基石。它简单到初学者第一天就能上手,又深刻到顶级研究者还在挖掘它的新性质。这就像钢琴的C大调音阶,看似基础,但所有大师都在反复练习。概念溯源时间回到1801年。意大利天文学家皮亚齐发现了第一颗小行星——谷神星。但观测了41天后,这颗小行星就消失在太阳的光辉里,找不到了。全欧洲的天文学家都在抓耳挠腮:怎么根据这短短41天的观测数据,预测它会在哪里重新出现?这

2025-10-29 10:04:31 931

原创 机器学习中的数学——线性映射与矩阵变换

今天简单聊聊线性映射和矩阵变换。别看这两个词听起来很数学很抽象,其实它们是深度学习最核心的操作——每一次前向传播、每一次激活函数前的线性变换、每一次注意力计算,背后都是线性映射在施展"魔法"。你可能会想:矩阵乘法我会啊,不就是行乘列嘛。等等,先别急。线性映射这个概念,远比"行乘列"要深刻得多。它不只是计算规则,而是一种看待世界的方式——当你理解了线性映射的几何本质,神经网络的黑盒突然就变透明了。看起来简单的矩阵乘法,其实是在描述空间的变形:拉伸、旋转、投影、翻转…每个矩阵都是一个变换器,把输入空间"捏"成输

2025-10-29 10:04:15 1340

原创 机器学习中的数学——线性空间与基

今天简单聊聊线性空间和基这两个概念。别看它们听起来很数学很抽象,其实这是整个机器学习大厦的地基——没有它们,神经网络就无法"看懂"数据,梯度下降也找不到方向。你可能会想:不就是向量和坐标吗?我在高中就学过啊。等等,先别急。线性空间这个概念,远比你想象的要深刻。它不只是三维空间里的箭头,而是一个让数学家重新理解"空间"的革命性想法。今天我们就来聊聊,这个看似基础的概念,是怎么一步步演变成深度学习模型的核心语言的。故事要从19世纪说起。那时候,数学家们已经对三维空间里的几何驾轻就熟了——点、线、面、体,欧几里得

2025-10-28 10:47:13 1736 1

原创 机器学习中的数学——矩阵与向量基础

向量这个概念,最初是十九世纪物理学家为了描述力和速度这类"既有大小又有方向"的量搞出来的。你想啊,牛顿那会儿研究力学,光说"这个力是10牛顿"不够用啊,你得说清楚这力往哪个方向使劲吧?1843年,爱尔兰数学家哈密顿(对,就是那个搞出哈密顿量的家伙)正式提出了向量的数学定义。后来格拉斯曼又把它推广到多维空间。这玩意儿最开始就是个物理工具,谁能想到两百年后它会成为神经网络的通用语言呢?历史定位一句话:向量是从经典力学中生长出来的数学语言,后来成了整个线性代数的主角。向量的本质是什么?它是空间中的一个箭头。在二维

2025-10-28 10:38:36 565

原创 从零开始构建神经网络:给机器注入灵魂

让我们从最熟悉的东西开始——你的大脑!fill:#333;color:#333;color:#333;fill:none;接收信号树突处理信号细胞体判断是否激活阈值检测发送信号轴突👆树突接收信号:皮肤感受器检测到"烫"🧠细胞体处理:神经元累加这个信号强度⚡判断是否激活:如果够烫,神经元就"发电"📡轴突发送信号:告诉大脑"快缩手!先忘掉复杂的数学,我们从一个超简单的例子开始。场景:你是餐厅服务员,要判断客人是否满意fill:#333;color:#333;color:#333;

2025-10-27 19:25:38 941

原创 深度学习——反向传播的本质

目标驱动:只关心最终的Loss,不关心中间层"应该"是什么链式传播:通过链式法则,将输出层的误差信号逐层传回梯度下降:沿着负梯度方向调整参数,保证Loss局部下降这种"不求全局最优解,只求每步改进"的策略,让我们能够训练拥有数十亿参数的深度模型。

2025-10-27 10:31:12 854

原创 无锁队列:从零构建生产者-消费者数据结构

结构即协议:数据结构本身定义了线程间的协作规则性能可预测:固定内存,确定性延迟故障隔离:无锁意味着无死锁,系统更robust让硬件为软件服务,让结构承担复杂度。掌握了这个模式,你就理解了现代高性能系统的核心设计思想。

2025-07-11 13:28:05 1267

原创 音频流媒体技术选型指南:从PCM到Opus的实战经验

这篇文章将分享我在实际项目中的踩坑经验和最佳实践,帮助技术决策者做出选择。

2025-07-07 13:21:10 1443

原创 Linux内核启动:深入理解Initramfs与Initrd机制

initramfs/├── bin/├── sbin/├── dev/│ └── null├── proc/├── sys/├── lib/├── etc/└── initInitramfs和initrd都是Linux内核启动过程中的重要组件,它们解决了现代计算机系统中根文件系统访问的复杂性问题。虽然initrd在历史上发挥了重要作用,但initramfs以其更简洁的设计和更好的性能逐渐成为主流选择。

2025-06-27 21:55:35 1295

原创 PyQt5图片拼接工具开发详解

本项目是一个基于PyQt5开发的多图拼接工具,支持多张图片的左右或上下拼接,具备图片拖放、复制粘贴、缩略图预览等功能。通过直观的用户界面,用户可以轻松地添加、删除和排列待拼接的图片,并将拼接结果保存或直接拖动到其他应用中使用。# ...# 计算列数和项目宽度continue# 计算下一个项目位置# 如果放不下当前行,换到下一行# 创建当前项目的矩形x = next_x继承QLayout实现自定义布局动态计算每个项目的位置和大小支持自动换行排列处理项目的尺寸约束。

2025-04-15 13:35:53 1001

原创 从快到慢学习Git指令

总的来说,Git是一个非常强大的版本控制工具。对于不同的使用场景,你需要掌握不同的命令和概念。但无论你的需求如何,只要掌握了上述这些常用的命令和重要的概念,你就可以很快地上手Git,开始享受它带来的便利。当然,Git还有很多高级的特性和用法,这需要你在使用的过程中不断学习和探索。希望这篇快速上手指南可以帮助你尽快开始使用Git,提高开发效率。祝你的Git之旅一帆风顺!

2024-08-13 23:59:21 991

原创 详细学习PyQt5的样式表与界面美化

在实战练习和学习的过程中,记得总结和反思自己的样式表编写经验。养成良好的命名习惯,使用有意义的选择器名称和注释,提高样式表的可读性。将常用的样式提取为通用样式类,促进样式的重用和一致性。合理使用继承和层叠,避免不必要的样式重复和冲突。注意样式表的性能影响,避免过于复杂的选择器和过多的样式规则。定期重构和优化样式表,保持样式表的整洁和可维护性。与团队成员分享和交流样式表的最佳实践,促进知识共享和代码质量提升。/* 通用样式 */QWidget {/* 按钮样式 */

2024-08-13 22:37:47 6749 3

原创 快速学习C++中的模板

在使用模板时,请注意某些模板可能不适用于所有数据类型。当使用模板编程时,确保为所有可能的类型提供了正确的实现。模板是C++的一个强大特性,它允许您编写通用的代码来处理不同的数据类型。您不仅可以使用类型作为模板参数,还可以使用非类型模板参数,例如整数。函数模板允许您创建一个函数,该函数可以处理多种数据类型的输入。时,编译器会为每种数据类型生成一个版本的函数。类模板允许您定义一个能够处理多种数据类型的类。函数的返回类型和其参数类型都是由模板参数。上述代码定义了一个固定大小的数组类,其中。

2023-12-16 23:05:15 618

原创 待办事项列表项目

本项目的目标是创建一个简单而直观的待办事项列表应用程序。添加任务:允许用户输入并添加新任务到待办事项列表中。删除任务:提供选项以从列表中删除不再需要的任务。编辑任务:让用户能够修改现有任务的描述。搜索和过滤:使用户能够通过关键词搜索任务,便于快速找到特定任务。进度跟踪:通过进度条展示任务完成的总体进度,帮助用户了解他们完成任务的情况。应用程序的用户界面(UI)设计注重简洁性和易用性,以确保用户能够轻松地进行日常任务管理。任务输入框:用于输入新任务的文本区域。控制按钮。

2023-12-16 22:55:09 2080

原创 快速学会绘制Pyqt5中的所有图(下)

在 PyQtGraph 中直接绘制平行坐标图(Parallel Coordinates)并不直接支持,因为 PyQtGraph 主要用于绘制二维和三维的数据可视化图形,如折线图、散点图等。在 PyQtGraph 中创建甘特图需要一些额外的工作,因为它主要用于绘制二维和三维的数据可视化图形,如折线图、散点图等,而不直接支持甘特图。在 PyQtGraph 中绘制股票图(通常指蜡烛图或OHLC图)需要一些额外的步骤,因为这需要特殊的图表来表示股票的开盘价、最高价、最低价和收盘价。类来表示甘特图中的单个任务。

2023-12-09 00:14:05 2523

原创 快速学会绘制Pyqt5中的所有图(上)

PyQt5,作为一个强大的跨平台GUI库,通过与PyQtGraph以及其他绘图库的结合,为我们提供了一系列工具来创建丰富的图形界面和图表。无论是基础的折线图、柱状图、散点图,还是更高级的股票图、甘特图、雷达图,甚至是地理信息系统(GIS)图表,PyQt5都能帮助我们构建出色且功能强大的数据可视化应用程序。在本系列教程中,我将向你展示如何使用PyQt5和PyQtGraph以及Matplot来绘制各种常见的图表,为数据呈现提供直观的视图。

2023-12-09 00:13:23 3982

原创 快速学习PyQt5的高级自定义控件

在深入探讨自定义控件之前,让我们简要回顾一下PyQt5控件和继承机制的基本概念。控件(Widgets):在PyQt5中,控件是构成用户界面的基本元素,如按钮、文本框、标签等。每个控件都是QWidget类的实例或其子类的实例。继承机制:PyQt5中的控件继承体系允许开发者通过继承现有控件类来创建新的控件。这种继承机制提供了极大的灵活性,使得自定义控件可以扩展和改进现有控件的功能。在PyQt5中,自定义绘图主要通过重写控件的paintEvent方法来实现。

2023-12-04 23:56:41 2480

原创 快速学习PyQt5的动画和图形效果

PyQt5内置了多种缓动函数,如等,可以直接应用于动画对象。# 创建动画对象# 设置动画参数# 应用预定义的缓动函数# 启动动画自定义缓动函数允许开发者创造独特的动画效果。这通常涉及到创建一个自定义的对象,并设置一个自定义的缓动函数。# 自定义一个缓动函数# 创建动画对象# 设置动画参数# 创建自定义的缓动曲线# 启动动画在这个示例中,我们定义了一个简单的自定义缓动函数,它返回的值随时间的平方变化。然后将这个函数应用到上,并设置给动画对象。

2023-12-04 23:52:19 4405

原创 详细学习Pyqt5的10种容器(Containers)

您可以根据需要添加更多的标签页,并在每个标签页内放置不同类型的子控件,以满足您的应用需求。您可以根据需要添加更多的页面,并在每个页面中放置不同类型的子控件,以实现复杂的界面布局。QGroupBox是PyQt5中的一个容器控件,它用于将一组相关的界面元素进行分组,从而在界面中创建有组织的部分。在这个示例中,我们首先创建了一个QFrame,然后在该QFrame中创建了两个QLabel。在这个示例中,我们首先创建了一个QWidget作为窗口的中央部件,然后创建了一个按钮,并将按钮添加到QWidget中。

2023-12-03 23:03:38 3230 1

原创 详细学习Pyqt5的9种显示控件

在PyQt5界面设计中,显示控件扮演着至关重要的角色。它们不仅负责向用户展示信息、图像、或其他多媒体内容,而且在很大程度上决定了应用程序的用户体验和交互效果。通过精心设计和使用这些控件,可以创建出直观、易于操作且视觉上吸引人的界面。了解这些控件如何工作及其适用场景,对于设计高效、美观的用户界面至关重要。接下来,我们将逐一深入探讨每个控件的特点和使用方法。

2023-12-03 22:57:13 5363

原创 详细学习PyQt5中的多线程

本节将探讨为何在PyQt5应用中采用多线程和并发编程是必要的,并引出接下来将要深入讨论的主题:多线程的基本概念、并发编程的需求以及如何与PyQt5框架集成。在这个场景中,使用多线程可以提高用户体验,保持应用的响应性。多线程和并发在图形用户界面应用程序中的应用是至关重要的,可以提高应用的性能、响应性和用户体验。在 PyQt5 应用中,异步编程和协程可以提高程序的效率,尤其是在处理涉及网络请求或其他 I/O 操作的任务时。在Python中,多线程是一种同时执行多个线程的机制,每个线程都是独立的执行流。

2023-12-02 20:26:09 7113 3

原创 详细学习Pyqt5的20种输入控件(Input Widgets)

本文将深入探讨PyQt5中一些常用的输入和控制控件,包括QLineEdit、QTextEdit、QSpinBox等,以帮助开发者更好地理解和运用这些控件,提升用户体验和界面交互的质量。通过详细介绍这些控件的特性、用法和实际应用案例,我们将为开发者提供在PyQt5应用中优雅处理用户输入和控制的技能和洞见。在使用这些控件时,我们学习了一些最佳实践,例如清晰的标签和提示信息、输入验证和反馈、合理的默认值等,以及解决一些常见问题的方法。通过合理的设计和配置,我们能够创建直观、易用的用户界面,提高应用程序的可用性。

2023-12-02 20:20:47 4086

原创 简单了解设计模式

封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变它们之间的交互。常见的设计模式大致可以分为三个主要类别:创建型、结构型和行为型。这些模式为常见的软件设计问题提供了经过验证的解决方案,使得软件设计更为模块化、灵活和可维护。:这类模式主要关注类和对象的组合。:这类模式主要关注如何创建对象。:这类模式主要关注对象的职责。

2023-12-01 23:44:01 730

原创 详细学习PyQt5与数据库交互

在PyQt5中,可以使用。

2023-12-01 23:39:46 2935 1

原创 详细学习Pyqt5的4种项目部件(Item Widget)

PyQt5 允许将自定义的小部件(如按钮、输入框等)嵌入到标准的项控件中,例如。

2023-11-30 12:35:05 1902

原创 详细学习Pyqt5的5种项目视图(Item View)

在现代的应用程序设计中,有效地展示和管理数据是至关重要的。特别是在 PyQt5 这样的强大 GUI 框架中,选择合适的视图和组合框控件对于创建一个既美观又功能强大的用户界面尤为关键。视图控件提供了展示列表、表格、树状结构等不同形式数据的方法,而组合框则允许用户在一个下拉列表中选择一个选项,两者都是数据展示和用户交互的重要组成部分。了解和掌握这些组件的使用,对于开发一个高效且用户友好的 PyQt5 应用程序是非常重要的。通过这些组件,开发者可以提供清晰、直观且交互性强的数据展示和选择方式。

2023-11-30 12:32:53 3258

原创 详细学习Pyqt5中的2种弹簧

在PyQt5的布局管理中,"弹簧"扮演着至关重要的角色,它们是一种特殊的布局工具,用于控制空间分配和控件之间的间隔。理解并有效地使用弹簧可以极大地提高界面的灵活性和美观性。PyQt5中的弹簧主要分为两种:水平弹簧和垂直弹簧。水平弹簧(在HBoxLayout中使用)主要用于管理控件在水平方向上的间距,而垂直弹簧(在VBoxLayout中使用)则用于控制垂直方向上的间距。这些弹簧元素不仅帮助分隔界面元素,还能够在调整窗口大小时动态调整间隔,保持界面布局的一致性和协调性。

2023-11-29 23:21:23 2592

原创 详细学习Pyqt5中的6种按钮

在用户界面设计中,按钮扮演着极为重要的角色。作为界面与用户互动的主要媒介之一,按钮不仅是命令和功能的触发点,还是引导用户流程和提升用户体验的关键元素。合理设计的按钮不仅使用户界面更加直观易用,还能显著提升软件的整体可用性和效率。PyQt5,作为一个强大的Python GUI库,提供了多种类型的按钮,以适应不同的使用场景和需求。在接下来的内容中,我们将详细讨论这些不同类型的PyQt5按钮,探索它们的特性、用途以及如何在实际的应用程序中有效地使用它们。

2023-11-29 23:17:23 4815

原创 详细学习Pyqt5中的5种布局方式

PyQt5,作为一个功能丰富的GUI(图形用户界面)开发框架,为Python应用程序提供了丰富的界面设计功能。布局管理在PyQt5中扮演着至关重要的角色,它决定了应用界面的组织和展示方式。有效的布局管理不仅能提高界面的美观性和用户体验,还能确保应用在不同屏幕尺寸和分辨率下都能保持良好的兼容性和可用性。接下来,我们将逐一深入这些布局类型,探索它们的特点、应用场景以及如何在PyQt5中实现它们。

2023-11-28 13:20:28 8056 2

原创 快速掌握Pyqt5的9种显示控件

在PyQt5中,各种显示控件(Display Widgets)提供了丰富的功能来呈现数据和信息。

2023-11-28 12:01:53 3131 1

原创 快速掌握Pyqt5的20种输入控件(Input Widgets)

PyQt5提供了多种输入控件(Input Widgets),允许用户输入和修改数据。这些控件是构建交互式用户界面的重要组成部分。

2023-11-27 12:55:39 6439

原创 快速掌握Pyqt5的10种容器(Containers)

下面将提供一些简单的例子,展示PyQt5中不同种类容器的基本用法。

2023-11-27 12:42:12 2962

原创 快速弄懂Pyqt5的5种项目视图(Item View)

PyQt5的Item View框架提供了一套用于显示和编辑数据的控件。这些控件允许开发者以列表、表格或树的形式展示数据集合,同时提供了丰富的功能来处理数据输入、显示格式和用户交互。

2023-11-26 12:22:05 1118

原创 快速弄懂Pyqt5的4种项目部件(Item Widget)

在PyQt5中,item widget是指可以放置在某些特定控件中的小部件,这些控件如和支持直接在其单元格内放置widget。Item widget允许你在这些控件的每个项里放置更复杂的控件,例如按钮、复选框、下拉菜单等。

2023-11-26 12:20:08 2551

原创 快速掌握Pyqt5的2种弹簧

在PyQt5中,“弹簧”(Spacer)指的是在布局中使用的空间填充物,主要用于在控件之间添加额外的空白区域或者推动控件到窗口的一边。在PyQt5中,这种弹簧效果通常是通过来实现的,这些弹簧可以在水平或垂直布局中使用。

2023-11-25 18:22:30 3612

原创 快速掌握Pyqt5的5种布局

可以通过继承QLayout类来创建自定义布局管理器,为特定的布局需求提供解决方案。

2023-11-25 18:20:47 3164

原创 快速掌握Pyqt5的三种主窗口

在PyQt5中,你还可以通过继承现有的窗口类(如QWidget或QDialog)来创建自定义窗口,并重写特定方法或添加新的属性和功能,以满足特定的应用需求。

2023-11-24 00:03:24 4035

串口波特率检测软件源码

支持未知波特率自动检测,采用独特算法识别串口通信参数并能成功匹配到最合适的波特率,支持常用波特率检测以及波特率范围扫描

2025-06-27

STM32F429和GY90614非接触红外测温并用OLED显示.zip

使用MSBus协议读取GY90614获取温度数据,并通过0.96寸OLED显示屏显示出来,同时使用串口1发送。

2021-11-27

STM32F103和F29定时器对应引脚分布.zip

STM32F103和F29定时器对应引脚分布情况.zip

2021-08-06

STM32F103和F429外部中断引脚分布.zip

STM32F103和F429外部中断引脚分布.zip

2021-08-06

STM32F103和F429串口对应引脚分布.zip

STM32F103和F429串口对应引脚分布.zip

2021-08-06

STM32F103和F429 DMA引脚对应分布.zip

STM32F103和F429 DMA引脚对应分布情况.zip

2021-08-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除