- 博客(1794)
- 资源 (70)
- 收藏
- 关注
原创 3层神经网络:从原理到代码实现的完整指南
用np.dot()一次性完成整层的加权和计算避免低效的循环操作NumPy的向量化运算大幅提升性能通过这个简单的3层神经网络实现,我们看到了深度学习的基本构建模块。虽然这个网络还无法解决复杂问题,但它包含了所有核心概念:✅ 前向传播 ✅ 激活函数 ✅ 矩阵运算 ✅ 参数组织掌握了这些基础,你就为学习更复杂的网络架构(如CNN、RNN)打下了坚实的基础!实践建议:尝试修改网络结构(如增加神经元数量),观察输出变化;或者用真实数据集替换我们的示例数据,看看网络的表现如何。
2026-01-06 08:48:38
336
原创 神经网络(3 层神经网络的实现)
现在我们来进行神经网络的实现。这里我们以图3-15 的3 层神经网络为对象,实现从输入到输出的(前向)处理。在代码实现方面,使用上一节介绍的NumPy多维数组。巧妙地使用NumPy数组,可以用很少的代码完成神经网络的前向处理。
2026-01-06 08:48:04
402
原创 NumPy多维数组运算:神经网络高效实现的核心
掌握NumPy多维数组运算是深度学习实现的基础。理解矩阵乘法的维度匹配规则利用向量化运算替代循环掌握批量数据处理技巧我们可以高效实现复杂的神经网络结构。这种"一次计算完成所有"的能力,正是深度学习能够处理大规模数据的核心技术支撑。记住:在深度学习中,如果你在写for循环,很可能有更好的向量化方法!
2026-01-05 08:46:56
282
原创 神经网络(多维数组的运算)
如果掌握了NumPy多维数组的运算,就可以高效地实现神经网络。因此,本节将介绍NumPy多维数组的运算,然后再进行神经网络的实现。
2026-01-05 08:46:18
388
原创 激活函数详解:从感知机到神经网络的核心组件
引入非线性:使网络可以学习复杂模式决定信息流:控制信号的传递和转换影响训练:梯度传播和收敛速度从阶跃函数到Sigmoid,再到ReLU,激活函数的发展反映了深度学习领域的进步。理解不同激活函数的特性和适用场景,是构建高效神经网络模型的基础。思考题:在实际项目中,你会如何根据具体任务选择激活函数?欢迎在评论区分享你的经验!
2026-01-04 08:41:11
530
原创 神经网络(激活函数)
式(3.3)表示的激活函数以阈值为界,一旦输入超过阈值,就切换输出。这样的函数称为“阶跃函数”。因此,可以说感知机中使用了阶跃函数作为激活函数。也就是说,在激活函数的众多候选函数中,感知机使用了阶跃函数。那么,如果感知机使用其他函数作为激活函数的话会怎么样呢?实际上,如果将激活函数从阶跃函数换成其他函数,就可以进入神经网络的世界了。下面我们就来介绍一下神经网络使用的激活函数。
2026-01-04 08:40:40
861
原创 函数探幽(C++内联函数和引用变量)
内联函数是C++为提高程序运行速度所做的一项改进。常规函数和内联函数之间的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中。要了解内联函数与常规函数之间的区别,必须深入到程序内部。编译过程的最终产品是可执行程序—由一组机器语言指令组成。运行程序时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址。计算机随后将逐步执行这些指令。有时(如有循环或分支语句时),将跳过一些指令,向前或向后跳到特定地址。常规函数调用也使程序跳到另一个地址。
2026-01-04 08:40:09
903
原创 C++函数指针全解:从入门到高阶应用
提高代码复用性:通过参数化算法增强灵活性:运行时决定调用哪个函数支持回调机制:实现事件驱动编程维护遗留代码理解C++底层机制特定性能敏感场景仍然非常重要。掌握函数指针能让你更深入地理解C++的函数调用机制,写出更灵活、更高效的代码。记住:能力越大,责任越大。函数指针赋予你强大能力的同时,也需要你更加注意代码的安全性和可维护性。
2025-12-31 08:44:48
349
原创 函数—C++的编程模块(函数指针)
函数是C++的编程模块。要使用函数,必须提供定义和原型,并调用该函数。函数定义是实现函数功能的代码;函数原型描述了函数的接口:传递给函数的值的数目和种类以及函数的返回类型。函数调用使得程序将参数传递给函数,并执行函数的代码。在默认情况下,C++函数按值传递参数。这意味着函数定义中的形参是新的变量,它们被初始化为函数调用所提供的值。因此,C++函数通过使用拷贝,保护了原始数据的完整性。C++将数组名参数视为数组第一个元素的地址。从技术上讲,这仍然是按值传递的,因为指针是原始。
2025-12-31 08:42:26
370
原创 C++函数与string对象、array对象及递归详解
本文介绍了C++中三类重要的编程技术:string对象数组操作、array模板类的函数参数传递,以及递归函数的原理和应用。更安全地处理字符串和数组理解值传递和地址传递的区别掌握递归思维,解决分治类问题递归虽强大,但需谨慎使用。确保有明确的终止条件,并注意递归深度限制。对于性能敏感的场景,考虑使用迭代替代递归。
2025-12-30 16:35:42
403
原创 函数—C++的编程模块(函数和string 对象)
虽然C-风格字符串和string 对象的用途几乎相同,但与数组相比,string 对象与结构的更相似。例如,可以将一个结构赋给另一个结构,也可以将一个对象赋给另一个对象。可以将结构作为完整的实体传递给函数,也可以将对象作为完整的实体进行传递。如果需要多个字符串,可以声明一个string 对象数组,而不是二维char 数组。程序清单7.14 提供了一个小型示例,它声明了一个string 对象数组,并将该数组传递给一个函数以显示其内容。输出结果。
2025-12-30 16:35:02
294
原创 从感知机到多层神经网络:理解异或问题的突破
从单层到多层的跨越从线性到非线性的突破从简单分类到通用计算的扩展正是这种层叠结构,让神经网络从简单的线性分类器成长为能够处理图像识别、自然语言处理、游戏对弈等复杂任务的强大工具。理解多层感知机不仅是学习神经网络的起点,更是理解现代深度学习核心思想的基础。在后续的文章中,我们将探讨如何训练这样的多层网络,以及激活函数、反向传播等关键概念。下期预告:我们将深入探讨激活函数的作用——为什么简单的线性叠加不够,以及Sigmoid、ReLU等函数如何赋予神经网络非线性能力。思考题。
2025-12-29 09:14:33
912
原创 感知机(多层感知机和从与非门到计算机)
感知机不能表示异或门让人深感遗憾,但也无需悲观。实际上,感知机的绝妙之处在于它可以“叠加层”(通过叠加层来表示异或门是本节的要点)。这里,我们暂且不考虑叠加层具体是指什么,先从其他视角来思考一下异或门的问题。
2025-12-29 09:13:55
760
原创 函数—C++的编程模块(函数和结构)
现在将注意力从数组转到结构。为结构编写函数比为数组编写函数要简单得多。虽然结构变量和数组一样,都可以存储多个数据项,但在涉及到函数时,结构变量的行为更接近于基本的单值变量。也就是说,与数组不同,结构将其数据组合成单个实体或数据对象,该实体被视为一个整体。前面讲过,可以将一个结构赋给另外一个结构。同样,也可以按值传递结构,就像普通变量那样。在这种情况下,函数将使用原始结构的副本。另外,函数也可以返回结构。与数组名就是数组第一个元素的地址不同的是,结构名只是。
2025-12-29 09:11:54
521
原创 函数—C++的编程模块(函数和结构)
现在将注意力从数组转到结构。为结构编写函数比为数组编写函数要简单得多。虽然结构变量和数组一样,都可以存储多个数据项,但在涉及到函数时,结构变量的行为更接近于基本的单值变量。也就是说,与数组不同,结构将其数据组合成单个实体或数据对象,该实体被视为一个整体。前面讲过,可以将一个结构赋给另外一个结构。同样,也可以按值传递结构,就像普通变量那样。在这种情况下,函数将使用原始结构的副本。另外,函数也可以返回结构。与数组名就是数组第一个元素的地址不同的是,结构名只是。
2025-12-29 09:11:19
750
原创 深度学习基础:从零理解感知机及其逻辑电路实现
感知机结构:输入×权重 + 偏置 → 激活函数 → 输出权重 vs 偏置权重:控制各输入信号的重要性偏置:调节神经元激活的难易程度万能性:相同结构的感知机通过调整参数可实现不同逻辑功能局限:单层感知机无法解决非线性可分问题(如异或门)历史意义:感知机是神经网络的基础,开启了深度学习时代。
2025-12-26 08:54:19
983
原创 感知机(感知机是什么)
感知机接收多个输入信号,输出一个信号。这里所说的“信号”可以想象成电流或河流那样具备“流动性”的东西。像电流流过导线,向前方输送电子一样,感知机的信号也会形成流,向前方输送信息。但是,和实际的电流不同的是,感知机的信号只有“流/ 不流”(1/0)两种取值。在本书中,0对应“不传递信号”,1 对应“传递信号”。图2-1 是一个接收两个输入信号的感知机的例子。x1、x2 是输入信号,y 是输出信号,w1、w2 是权重(w是weight 的首字母)。图中的○称为“神经元”或者“节点”。
2025-12-26 08:53:37
704
原创 C++函数与数组:二维数组与字符串参数详解
二维数组参数必须指定列数,字符串参数依赖空字符判断结束,返回动态字符串需注意内存管理。掌握这些核心概念,能更好地设计和使用C++数组相关函数。列数必须在编译时确定,行数可在运行时确定。
2025-12-26 08:52:14
261
原创 函数—C++的编程模块(函数和二维数组)
为编写将二维数组作为参数的函数,必须牢记,数组名被视为其地址,因此,相应的形参是一个指针,就像一维数组一样。比较难处理的是如何正确地声明指针。则sum( )的原型是什么样的呢?函数为何将行数(3)作为参数,而将列数(4)作为参数呢?Data 是一个数组名,该数组有3 个元素。第一个元素本身是一个数组,有4 个int 值组成。因此data其中的括号是必不可少的,因为下面的声明将声明一个由4 个指向int 的指针组成的数组,而不是由一个指向由4 个int 组成的数组的指针;
2025-12-26 08:51:41
904
原创 C++函数与数组的深度结合:指针、常量与区间操作
数组传参原则总是传递数组大小作为单独参数使用const保护不需要修改的数组函数设计模式// 修改数组// 只读访问安全性考虑优先使用const保护数据考虑使用数组区间操作增加灵活性避免混淆指针的const位置自下而上的设计先考虑数据结构和基本操作再组合成完整程序这是面向对象编程的基础。
2025-12-25 08:48:26
254
原创 函数—C++的编程模块(函数和数组)
到目前为止,本书的函数示例都很简单,参数和返回值的类型都是基本类型。但是,函数是处理更复杂的类型(如数组和结构)的关键。下面来如何将数组和函数结合在一起。假设使用一个数组来记录家庭野餐中每人吃了多少个甜饼(每个数组索引都对应一个人,元素值对应于这个人所吃的甜饼数量)。现在想知道总数。这很容易,只需使用循环将所有数组元素累积起来即可。将数组元素累加是一项非常常见的任务,因此设计一个完成这项工作的函数很有意义。这样就不必在每次计算数组总和时都编写新的循环了。考虑函数接口所涉及的内容。
2025-12-25 08:43:32
687
原创 加速模型训练的三大秘籍:让模型迭代速度飞起来!
混合精度训练是一种简单却极其有效的技巧,能将几乎所有模型的训练速度提高3倍,而且基本是“免费”的!浮点数精度解析半精度(float16):16位存储,精度约1e-3单精度(float32):32位存储,精度约1e-7(Keras默认)双精度(float64):64位存储,精度约1e-16方法加速倍数适用场景技术门槛混合精度2-3倍几乎所有GPU训练低多GPU训练2-8倍需要快速迭代的中大型模型中TPU训练15倍追求极致性能的专业场景中高在深度学习中,“速度就是质量”。
2025-12-24 08:48:57
366
原创 适合现实世界的最佳实践(加速模型训练)
回想一下第7 章所述的“取得进展的循环”:想法的质量取决于这一想法经历了多少轮完善,如图13-1 所示。你对一个想法进行迭代的速度,取决于创建实验的速度、运行实验的速度以及分析结果数据的速度。随着你掌握的Keras API 专业知识越来越多,深度学习实验的代码编写速度将不再是这个循环的瓶颈。接下来的瓶颈是模型的训练速度。利用快速的训练基础设施,你可以在10 ~ 15 分钟内得到结果。因此,你可以每天运行数十次迭代。更快的训练速度可以直接提高深度学习解决方案的质量。
2025-12-24 08:48:10
297
原创 C++函数参数详解:值传递、多参数与局部变量
/ 正确:每个参数单独声明类型i < count;// 错误:不能合并声明void wrongFunction(float a, b) { // 编译错误!// ...值传递是默认方式:传递的是参数的副本,保护原始数据不被意外修改形参是局部变量:只在函数内部有效,与外部变量隔离多参数需单独声明:即使类型相同,每个参数也要单独声明类型函数原型可省略参数名:但为了可读性,建议保留局部变量的生命周期:函数调用时创建,函数结束时销毁数值计算要注意溢出。
2025-12-24 08:47:09
262
原创 函数—C++的编程模块(函数参数和按值传递)
下面详细介绍一下函数参数。C++通常按值传递参数,这意味着将数值参数传递给函数,而后者将其赋给一个新的变量。其中,side 是一个变量,在前面的程序运行中,其值为5。被调用时,该函数将创建一个新的名为x 的double 变量,并将其初始化为5。这样,cube( )执行的操作将不会影响main( )中的数据,因为cube( )使用的是side 的副本,而不是原来的数据。稍后将介绍一个实现这种保护的例子。用于接收传递值的变量被称为形参。传递给函数的值被称为实参。出于简化的目的,
2025-12-24 08:46:38
365
原创 将模型性能发挥到极致:超参数优化与模型集成的艺术
超参数是那些你在构建模型时必须做出的架构决策网络应该有多少层?每层应该有多少个神经元?使用什么激活函数?Dropout比率应该是多少?学习率应该设置为多少?与通过反向传播训练的模型参数不同,超参数需要手动设置。经验丰富的工程师凭直觉调整这些参数,但这远非最优方法。
2025-12-23 08:40:16
525
原创 适合现实世界的最佳实践(将模型性能发挥到极致)
如果你只想让模型具有不错的性能,那么盲目地尝试不同的架构配置足以达到目的。本节将介绍一套用于构建最先进的深度学习模型的必备技术,让你的模型由“具有不错的性能”上升到“性能卓越并且能够赢得机器学习竞赛”。
2025-12-23 08:39:44
694
原创 C++函数三大要素:定义、原型与调用完全指南
函数三要素:定义、原型、调用缺一不可原型是契约:告诉编译器函数接口,提供类型安全检查返回类型:可以是除数组外的任何类型,void表示无返回值原型在前:确保main()清晰易读,编译器能正确解析函数调用掌握函数的基础知识是成为C++程序员的重要一步。正确的函数使用能让代码更清晰、更安全、更易维护!🚀编程名言:函数是程序的积木,原型是使用说明书。没有说明书的积木,拼出来的可能是灾难!
2025-12-23 08:39:09
392
原创 函数—C++的编程模块(复习函数的基本知识)
可以将函数分成两类:没有返回值的函数和有返回值的函数。没有返回值的函数被称为void 函数,其return;//optional其中,parameterList 指定了传递给函数的参数类型和数量,本章后面将更详细地介绍该列表。可选的返回语句标记了函数的结尾;否则,函数将在右花括号处结束。void 函数相当于Pascal 中的过程、FORTRAN中的子程序和现代BASIC 中的子程序过程。通常,可以用void 函数来执行某种操作。例如,将Cheers!打i<n;i++)
2025-12-23 08:38:38
912
原创 深度解析生成式对抗网络(GAN):从理论到实战实现
GAN的本质:生成器与判别器的minimax博弈训练挑战:动态平衡、模式崩溃、训练不稳定实用技巧:精心设计网络结构、添加正则化、耐心调参应用场景:图像生成、数据增强、风格迁移、超分辨率等GAN的训练确实需要更多耐心和技巧,但当你看到第一张由自己训练的模型生成的逼真图像时,所有的努力都是值得的!完整代码已整理,你可以在公众号后台回复"GAN代码"获取。如果你在实现过程中遇到任何问题,或有关于GAN的深度思考,欢迎在评论区留言讨论!深度学习的世界充满挑战,但每一步探索都可能开启新的可能。
2025-12-22 09:58:00
715
原创 生成式深度学习(生成式对抗网络入门)
生成式对抗网络(generative adversarial network,GAN)由Ian Goodfellow 等人于2014 年提出a。它可以代替VAE 来学习图像的潜在空间,迫使生成图像与真实图像在统计上几乎无法区分,从而生成相当逼真的合成图像。对GAN 的一种直观理解是,想象一名伪造者试图伪造毕加索的一幅画作。一开始,伪造者非常不擅长这项任务。他将自己的一些赝品与毕加索真迹混合在一起,并拿给一位艺术商人看。
2025-12-22 09:56:53
654
原创 C++类型组合与数组替代品完全指南
int year;// 其他数据成员// 安全的现代C++代码风格// 动态数据集合// 固定集合// 安全访问try {cerr << "索引越界: " << e.what() << endl;正确性比性能更重要,除非性能是绝对关键因素。现代C++提供了既安全又高效的选择,让我们能编写更健壮的代码!
2025-12-22 09:56:11
290
原创 复合类型(类型组合、数组的替代品)
本章介绍了数组、结构和指针。其中是一个数组,trio trio[0]是一个结构,而trio[0].year 是该结构的一个成员。由于数组名是一个指针,咋一看,这有点复杂。如何使用该数组来访问数据呢?既然arp 是一个指针数组,arp[1]就是一个指针,其中arp 是一个数组的名称,因此它是第一个元素的地址。但其第一个元素为指针,因此ppa 是一个指针,指向一个指向const antarctica_years_end 的指针。这种声明很容易容错。例如,您可能遗漏const,
2025-12-22 09:55:39
822
原创 用变分自编码器生成图像:从原理到实践
VAE为我们打开了生成式AI的大门,展示了如何通过学习数据的潜在结构来创造新内容。虽然它在图像逼真度上可能不如GAN,但其结构化的潜在空间和良好的数学基础使其在许多应用中更具优势。关键要点潜在空间是图像生成的“密码本”VAE通过概率编码引入连续性和结构化概念向量让我们能够“编辑”图像语义自监督学习是未来AI发展的重要方向完整代码已准备,读者可以直接运行实验。如果你对VAE的实现细节或扩展应用感兴趣,欢迎在评论区留言讨论!思考题。
2025-12-19 08:38:38
942
原创 生成式深度学习(用变分自编码器生成图像)
目前最流行也是最成功的创造性人工智能应用就是图像生成:学习潜在视觉空间,并从空间中进行采样来创造全新图片。这些图片是在真实图片中进行插值得到的,可以是想象中的人、想象中的地方、想象中的猫和狗等。本节和12.5 节将介绍一些与图像生成有关的概念,还会介绍该领域中的两种主要技术的实现细节。这两种技术分别是变分自编码器(variational autoencoder,VAE)和生成式对抗网络请注意,这里介绍的技术不仅适用于图像,你还可以使用VAE 和GAN 探索声音、音乐甚至文本的潜在空间。
2025-12-19 08:37:38
694
原创 指针、数组与指针算术:深入理解C++内存管理
区分指针与数组数组名是常量指针指针变量可以重新赋值正确使用字符串使用strcpy()或strncpy()复制字符串避免未初始化指针接收输入动态内存管理每个new必须有对应的delete数组使用delete[]指针置空防止悬空指针选择合适的内存类型局部变量用自动存储全局数据用静态存储动态大小数据用堆存储。
2025-12-19 08:36:38
363
TossDisplayForm.rar
2021-01-26
FilePathCopy.rar
2021-01-27
DynamicallyDisplayMenusWithTreeLists.rar
2021-01-22
FocusChangeColor.rar
2021-01-22
C# 指定时间可具体到某个时间对日志文件进行删除
2023-11-22
C# WinForm 读取多张图片、缩放、平移,缩放后可恢复原图
2022-11-05
C# textbox输入数字,也可以软键盘输入
2022-10-12
C# button textbox 控件实现功能输入数字
2022-10-07
ImageThumbnail.rar
2021-02-03
ChineseValidateCode.rar
2021-01-30
FileSizeProgress.rar
2021-01-29
APopoverShowsProgress.rar
2021-01-29
CopyDataGridDataByImitatingExcel.rar
2021-01-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅