- 博客(16)
- 收藏
- 关注
原创 从零开始手搓 (1)计算图 (c++,python语言实现)
本文介绍了计算图与自动微分的基本原理及实现方法。计算图作为有向无环图,通过节点和边表示运算依赖关系,支持反向传播算法实现梯度自动计算。文章详细讲解了链式法则的应用、反向传播流程,并针对C++实现中的内存泄漏和计算图断裂问题提出了智能指针解决方案。同时提供了Python和C++两种实现代码,包括完整的运算符重载、拓扑排序和梯度计算逻辑,并通过测试用例验证了实现的正确性。该自动微分框架可作为深度学习系统的核心组件,支持神经网络参数的梯度优化。
2026-03-18 23:01:48
546
原创 人工智能:深度学习:1.pytorch概述(2)
本文是 PyTorch 入门教程 系统讲解张量创建 运算 索引切片 广播机制 矩阵运算与自动微分 梯度计算等核心基础 介绍基于 nn.Module 自定义模型 对比 ModuleList 与 Sequential 的使用差异 并给出模型保存与加载方法 全文附带可运行代码示例 帮助初学者快速掌握 PyTorch 基础语法与模型搭建流程 适合深度学习入门学习PyTorch 深度学习 神经网络 张量 Tensor 自动微分 动态计算图 梯度计算 广播机制 哈达玛积 矩阵运算 模型搭建 模型保存 模型加载
2026-02-08 19:31:22
1060
原创 人工智能:深度学习:1.pytorch概述(1)
简介本文系统梳理 PyTorch 核心知识,涵盖框架简介、张量定义 / 类型 / 基本操作及代数运算四大模块,含丰富代码示例与运行结果注释。从张量创建(数据转换、形状生成、固定值生成)、属性获取、按元素运算、广播机制,到索引切片、split 分割,再到哈达玛积、矩阵向量积、矩阵乘法等核心运算,兼顾原理与工程实践,适配初学者快速上手与进阶者查阅。关键词PyTorch;张量;张量操作;广播机制;哈达玛积;矩阵乘法;torch.mv;torch.mm;索引切片;split 分割,范数
2026-02-05 16:59:34
1677
原创 C语言:8.指针(1)
本文梳理C语言指针核心重难点,解析其本质为内存地址,详解&取址、*解引用操作,同平台指针大小固定,类型决定内存解析规则。区分const修饰指针的三种权限场景,记“const近谁限谁”;讲解void*万能指针可接收任意地址、需强转解引用的特性;阐述指针运算规则,剖析野指针成因及规避方法;对比传值(传副本不改原值)与传址(传地址改原值)调用差异,附代码示例助力攻克指针难点。关键词:C语言指针、指针基础、const指针、void*、指针运算、野指针、传值调用、传址调用
2026-01-31 16:27:05
728
原创 算法:2.双指针变式 滑动窗口(c/c++ python 板)
本文介绍了滑动窗口算法在两个典型问题中的应用:最小子数组长度和无重复字符的最长子串。对于最小子数组问题(C++/Python),通过维护左右指针和窗口和,动态调整窗口大小寻找满足条件的最小窗口。对于无重复子串问题,优化版解法使用哈希记录字符最近位置,当出现重复时直接移动左指针,提高效率。两个问题都展示了滑动窗口算法的核心思想:通过双指针控制窗口大小,在遍历过程中保持有效解并优化解。文章还列出了相关练习题供进一步实践。
2025-11-02 23:27:55
291
原创 算法:1.双指针:(c/c++ python 板)
文章摘要:本文介绍了两个经典算法问题的解决方案。1) 移动零问题:使用双指针法遍历数组,将非零元素前移后补零,C++/Python实现简洁高效;2) 三数之和问题:通过排序+双指针策略,外层循环固定元素,内层双指针搜索满足条件的组合,注意去重和剪枝优化(如提前终止正数序列)。文章强调代码自检的重要性,并提供了四数之和作为延伸练习。两种解法均展示了算法优化思想,适合算法学习者参考实践。
2025-11-01 21:04:38
368
原创 c++:c++与算法(需要有C语言,数据结构基础)
注:list为链表,效率低于vector,且空间占用较大不推荐使用,但是再有大量的添加删除操作时可以使用,迭代器部分可以重点观看,list不支持[]!范围for是在c++11中引入,他可以比较方便的遍历容器或其他可迭代对象中的元素。他使用new(底层是malloc)在对上开辟空间,并对其进行空间管理,他可以自动扩容免去手动扩容的繁杂。优先级驱动(每次弹出优先级最高元素)底层为堆可以自动调整,默认情况为大堆,用于取最大。vector可以储存所有的数据类型,但一个vector只能储存一种类型。
2025-10-12 20:47:26
806
原创 C语言:7.操作符
8进制的数字每⼀位是0~7的,0~7的数字,各⾃写成2进制,最多有3个2进制位就⾜够了,⽐如7的⼆ 进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀ 个8进制位,剩余不够3个2进制位的直接换算。整数的2进制表⽰⽅法有三种,即原码、反码和补码 有符号整数的三种表⽰⽅法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号 位,剩余的都是数值位。如:2进制的 01101011,换成8进制:0153,0开头的数字,会被当做8进制。
2025-05-11 13:07:22
1218
原创 C语言 6.函数递归(概念较少,建议自己多练习)
在C语⾔中每⼀次函数调⽤,都需要为本次函数调⽤在内存的栈区,申请⼀块内存空间来保存函数调 ⽤期间的各种局部变量的值,这块空间被称为运⾏时堆栈,或者函数栈帧。函数不返回,函数对应的栈帧空间就⼀直占⽤,所以如果函数调⽤中存在递归调⽤的话,每⼀次递归 函数调⽤都会开辟属于⾃⼰的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。事实上,我们看到的许多问题是以递归的形式进⾏解释的,这只是因为它⽐⾮递归的形式更加清晰,但是这些问题的迭代实现往往⽐递归实现效率更⾼。所以递归的思考⽅式就是把⼤事化⼩的过程。
2025-02-20 22:10:17
967
原创 C语言5.函数(function)
本文系统的讲解了形参与实参以及函数的声明等各种问题 下面是目录 一,函数的概念二,库函数1.标准库和头⽂件2.头⽂件包含三,自定义函数1,自定义函数的语法格式2,函数的举例四,函数的形参与实参1.实参2.形参3,return 语句 4 数组做函数参数五,嵌套调⽤和链式访问1.嵌套调用2.链式访问六,函数的声明和定义1.函数的声明应该在函数使用之前2.多个⽂件声明七,static 和 extern1 static 修饰局部变量2.
2025-02-19 18:13:28
967
原创 C语言4.数组(一维数组与二维数组)
C语言 C语言基础 C语言教程 一, 数组的概念二,一维数组的创建与初始化 1.一维数组的创建 2 数组的初始化3 数组的类型 4. ⼀维数组的使⽤ 1. 数组下标 2,使用数组储存字符与字符串5. ⼀维数组在内存中的存储 6.sizeof 计算数组元素个数
2025-02-18 20:15:30
1927
原创 C语言3.分支与循环
本文为小白零基础学习准备,这是第三章主要细致讲解分支与循环。下面是目录一,if语句1.if语句语法规则 2.else语句语法规则3.if......else包含多个语句4.if的嵌套 5.悬空else问题二,关系,条件以及逻辑操作符1.关系操作符 2.条件操作符1 逻辑取反运算符 ! 2 逻辑与运算符 3.逻辑或运算符 4 逻辑短路三,循环语句1. switch 语句2.while循环3.for循环4.do-while 循环(使用较少)4. break和continue语句5.goto 语句
2025-02-17 19:28:55
640
原创 C语言2.C语⾔数据类型和变量
C语言数据类型 字符型 整型 浮点型 布尔类型 类型的字节长度 类型的取值范围 C语言学习. signed 和 unsigned sizeof 操作符 使用sizeof计算各数据类型长度 C语言变量 变量的创建C语言变量的命名规则 全局变量 局部变量 算术操作符 赋值操作符 单⽬操作符 强制类型转换 scanf 和 printf 介绍 占位符 printf scanf输出格式 printf打印颜色 scanf赋值忽略符 scanf的返回值 printf总是显示正负号 c语言限定小数位数 输出部分字符串
2025-02-16 18:02:17
1964
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1