- 博客(181)
- 收藏
- 关注
原创 【深度学习】自动微分模块
PyTorch自动微分模块总结: PyTorch通过torch.autograd模块实现自动微分,支持神经网络训练中的反向传播算法。核心要点包括: 梯度计算:使用backward()方法计算标量对张量的梯度,通过grad属性访问 梯度更新:遵循公式θ_new = θ_old - η·∇θL(θ_old),需手动实现更新过程 梯度清零:每次迭代前需调用zero_()方法清除历史梯度 数据转换:对需要自动微分的张量,需使用detach()方法转换为普通张量后才能转为numpy数组 典型应用场景包括神经网络参数优
2025-12-07 02:51:30
1040
原创 【深度学习】张量
本文介绍了PyTorch中张量的基本概念和创建方法。张量是多维数组的统称,包括标量(0维)、向量(1维)、矩阵(2维)及更高维数据。PyTorch的核心数据结构torch.Tensor支持GPU计算和自动求导。文章详细讲解了三种创建张量的方法:torch.tensor()根据数据创建张量并可指定数据类型;torch.Tensor()支持按形状创建;torch.IntTensor()等特定类型张量创建方法。每种方法都通过代码示例展示了不同维度的张量创建过程,并对比了它们的特点和使用场景。
2025-11-18 17:08:43
822
原创 【深度学习】深度学习概念
摘要:深度学习是机器学习的一个子领域,通过多层神经网络实现自动特征学习。相比传统机器学习,深度学习具有自动特征提取、端到端学习、强大非线性表示能力等特点,但也依赖大量数据和计算资源。其常见模型包括CNN、RNN、Transformer等,广泛应用于计算机视觉、自然语言处理、语音识别、推荐系统等多个领域。随着大模型发展,深度学习在多模态融合方面展现出强大潜力,但也面临可解释性不足等挑战。
2025-11-15 23:15:20
1114
1
原创 【机器学习】模型持久化与部署
本文介绍了机器学习模型持久化的重要性和实现方法。主要内容包括:1) 模型持久化指将训练好的模型保存到磁盘,避免重复训练;2) 必要性体现在节省资源、生产环境实时响应和版本管理;3) 详细演示了使用joblib工具保存和加载scikit-learn模型的过程;4) 强调模型验证和批量保存多个模型的技巧。通过模型持久化,可以高效部署机器学习模型到生产环境。
2025-10-30 19:07:08
422
原创 【机器学习】管道化与自动化建模
本文介绍了Scikit-learn中的Pipeline和ColumnTransformer工具。Pipeline通过封装预处理、特征工程和建模步骤为一个整体对象,解决了手动流程割裂、信息泄露和代码冗余问题,支持一键训练预测。ColumnTransformer则针对混合类型特征数据集,可对不同特征子集(如数值/类别)应用不同预处理(如标准化/独热编码),最后合并结果。两者结合可实现自动化、安全且高效的机器学习建模流程,特别适用于现实中的复杂数据场景。
2025-10-30 17:57:41
942
原创 【机器学习】模型评估与调优
数据划分:train_test_split—— 避免 “自欺欺人” 的关键在训练模型前,我们必须把数据分成训练集(Training Set) 和测试集(Test Set),这是评估模型泛化能力的前提。为什么必须划分训练集和测试集?模型训练的目标是 “在新数据上表现好”(泛化能力强),而不是 “在训练数据上表现好”。如果不划分数据,直接用全量数据训练并评估,会出现 “过拟合” 的误判:用 train_test_split 划分数据以鸢尾花数据集为例,演示标准划分流程:关键参数解读模型训练与预测 —— 标
2025-10-30 11:54:25
728
原创 【机器学习】无监督学习
无监督学习与K-Means聚类摘要 无监督学习是机器学习的核心范式之一,其特点是在没有标签的情况下,让模型自主发现数据中的潜在结构和规律。与监督学习不同,它不需要人工提供的"标准答案",而是通过分析数据特征来实现自动分组或降维。 K-Means是最经典的聚类算法,通过迭代寻找k个簇中心来实现数据分组。其核心步骤包括:初始化簇中心、分配样本到最近簇、更新簇中心位置,直到收敛。该算法广泛应用于客户分群、内容分类、异常检测等场景。 关键点: 无监督学习适用于缺乏标签的数据探索场景 K-Mean
2025-10-28 15:25:40
1080
原创 【机器学习】监督学习
摘要: 监督学习是机器学习的核心范式之一,通过带标签的样本训练模型,预测新样本的标签。其核心要素包括特征(X)、标签(y)和模型,主要分为分类(离散标签)和回归(连续标签)任务。典型流程涵盖数据准备、预处理、模型训练与评估。 关键算法示例: 逻辑回归:通过sigmoid函数输出概率,适用于二分类(如鸢尾花分类),具有可解释性强、训练快的特点。 K最近邻(KNN):基于“邻居投票”的惰性学习算法,直观易用(如多类鸢尾花分类),但计算复杂度随数据量增长。 监督学习凭借明确的输入-输出关系,成为工业界广泛应用的方
2025-10-27 17:38:08
1240
原创 【机器学习】数据预处理
机器学习数据预处理是确保模型有效学习的关键步骤,主要解决原始数据中存在的缺失值、量纲不统一、类别型数据等问题。预处理的核心任务包括:缺失值处理(使用SimpleImputer填补NaN)、特征缩放(标准化/归一化消除量纲差异)、编码处理(将类别特征转换为数值)、特征选择(剔除冗余特征)以及流水线组合(Pipeline自动化流程)。这些步骤能提升数据质量,使模型更准确地捕捉数据规律。处理时应遵循优先级:先解决缺失值等致命问题,再优化特征缩放等细节,全程使用流水线避免数据泄漏。
2025-10-26 17:37:46
1195
原创 【机器学习】Scikit-learn 框架基础
它不是用来做底层算法研发的(比如从零实现神经网络),而是把机器学习领域经过验证的经典算法(如线性回归、决策树、SVM 等)封装成 “即用型工具”,让你不用关心算法的数学细节,就能快速实现从数据到模型的全流程。如果你想做木工,不需要自己造锯子、锤子(算法原理),sklearn 就是一套现成的、标准化的工具套装,你只需要学会怎么用这些工具做出椅子、桌子(解决实际问题)。(流水线)能把 “预处理 + 模型” 串起来,核心就是因为所有模型的接口统一,流水线可以用同样的逻辑调用任何模型的。
2025-10-26 16:37:30
1084
原创 【Spring Security】授权(四)
Spring Security中的授权机制基于角色(Role)和权限(Authority)两个核心概念。角色是用户的宏观身份标识(如ROLE_ADMIN),权限是具体的操作许可(如user:read)。两者在技术上均通过GrantedAuthority接口实现,核心差异在于角色需遵循"ROLE_"前缀约定。授权校验本质是字符串匹配,hasRole()是hasAuthority()的语法糖。数据库设计通常采用RBAC模型,通过用户表、角色表、权限表及其关联表实现存储。用户登录时,系统会查询
2025-10-24 21:44:14
808
原创 【Spring Security】授权(三)
Spring Security 方法级安全(Authorization)提供细粒度的权限控制机制,通过AOP在方法执行前后进行权限校验。相比Web层URL级授权,它能精准控制单个业务方法,支持角色校验、数据归属验证等复杂场景。启用方法需配置@EnableMethodSecurity注解,新版采用AuthorizationManager模型,与Web层授权机制统一。典型应用包括:管理员专属操作、用户数据隔离、付费功能权限控制等,有效弥补了URL级授权的不足,实现业务逻辑与安全校验的解耦。
2025-10-24 17:38:04
871
原创 【Spring Security】授权(二)
Spring Security的Web层授权机制通过拦截HTTP请求,基于URL路径、请求方法和用户权限进行访问控制。核心组件包括触发授权流程的AuthorizationFilter、提供权限规则的SecurityMetadataSource和决策访问权限的AccessDecisionManager。授权流程依次检查用户认证信息、URL权限规则,最终由投票器决定是否放行请求。配置通过SecurityFilterChain实现,支持精细化的URL权限规则设定,适用于前后端分离项目的API权限管理。使用时需注意
2025-10-23 21:17:17
758
原创 【Spring Security】授权(一)
摘要:Spring Security的授权(Authorization)机制通过FilterSecurityInterceptor实现访问控制,核心组件包括AccessDecisionManager(权限决策管理器)和AccessDecisionVoter(投票器)。默认采用投票制模型,其中AffirmativeBased策略只需一票同意即可放行,ConsensusBased遵循多数表决,而UnanimousBased需全票通过。授权流程对比用户权限与资源所需权限(ConfigAttribute),最终决定
2025-10-21 19:21:29
863
原创 【Spring Security】安全过滤链
Spring Security通过安全过滤链实现认证与授权机制,核心是一条Servlet过滤器链。请求进入时,DelegatingFilterProxy将过滤任务转交给FilterChainProxy,后者根据URL匹配对应的SecurityFilterChain并执行15+内置过滤器(如WebAsyncManagerIntegrationFilter处理异步安全上下文,SecurityContextHolderFilter管理认证信息生命周期)。每条链可配置不同安全策略,过滤器依次处理认证、授权、CSRF
2025-10-19 20:32:34
630
原创 【Spring Security】认证(二)
摘要:本文介绍了如何在Spring Security中手动执行认证逻辑,包括在Controller中手动登录、配置AuthenticationManager以及常见应用场景。同时还讲解了默认的登出机制和自定义登出配置方法,涵盖LogoutFilter的工作原理以及如何定制登出路径和成功跳转页面。内容适用于前后端分离项目、移动端登录等需要自定义认证流程的场景。
2025-10-15 20:56:03
424
原创 【Spring Security】认证(一)
Spring Security 的 Form Login 是默认的认证方式,基于 HTML 表单实现登录流程。当访问受保护资源时,未登录用户会被重定向到默认 /login 页面,提交用户名和密码后由框架自动验证。关键配置包括:使用 UserDetailsService 管理用户信息,PasswordEncoder 加密密码,以及 HttpSecurity 配置授权规则和表单登录参数。通过 formLogin(Customizer.withDefaults()) 即可启用默认登录页,认证成功后重定向到原始请求
2025-10-15 02:01:27
614
原创 【Spring Security】Spring Security 密码编辑器
本文介绍了Spring Security的密码编码机制及其在Maven项目管理中的配置方式。主要内容包括: Maven依赖管理: 强调Spring Security和Spring Framework版本独立性 提供传统Spring MVC和Spring Boot两种集成方案 推荐使用Spring Boot的starter-security简化配置 密码编码器: 对比Spring Security 5前后的密码处理机制 说明{noop}前缀的使用场景及安全风险 重点推荐BCryptPasswordEncode
2025-10-12 21:00:58
942
3
原创 【Spring Security】Spring Security 概念
摘要:Spring Security 是 Spring 官方的安全框架,提供认证(Authentication)和授权(Authorization)功能。其核心架构基于过滤器链(Filter Chain),通过拦截请求进行安全检查。核心组件包括: AuthenticationFilter:拦截请求并转换为认证对象 AuthenticationManager:管理认证流程 AuthenticationProvider:具体实现认证逻辑 特点: 支持多种认证方式(表单登录、JWT、OAuth2等) 模块化设计,
2025-10-11 15:07:34
647
1
原创 【Spring Boot】Spring Boot 中常见的加密方案
本文介绍了Spring Boot中常见的两种加密方案:MD5和SHA系列。MD5是一种128位的哈希算法,具有快速计算和雪崩效应特点,但已被证明存在碰撞风险,不再安全。文章详细说明了MD5的原理、使用方法及加盐技巧,并强调其不适用于密码存储等安全场景。SHA系列则包括SHA-1(已淘汰)、SHA-2(当前主流)和SHA-3(新一代标准),具有更长的输出长度(224-512位)和更强的安全性,适用于数字签名、证书认证等场景。两种算法均通过分块处理、变量初始化和循环压缩等步骤生成固定长度摘要,但SHA系列采用更
2025-10-09 21:40:43
710
原创 【Python】并发——异步
Python异步编程摘要 异步编程通过事件循环实现单线程并发,核心是协程(可暂停/恢复的函数)。Python 3.5+引入async/await语法简化编写:async定义协程,await暂停当前协程等待I/O。相比同步阻塞(串行执行),异步能利用I/O等待时间执行其他任务,显著提升效率(如asyncio.gather并发多个协程)。典型应用场景包括网络请求、文件I/O等密集型任务。asyncio.run()是执行协程的推荐方式。
2025-10-07 02:36:47
401
原创 【Python】并发——全局解释器锁 GIL
GIL(全局解释器锁)是CPython中的互斥锁,确保同一时间只有一个线程执行Python字节码。虽然简化了内存管理和C扩展开发,但限制了多线程并行能力。CPU密集型任务无法利用多核加速,而I/O密集型任务仍可受益。解决方案包括使用多进程、C扩展(如NumPy在底层释放GIL)、异步I/O或替代Python实现。GIL切换机制基于时间片或字节码计数,C扩展可通过Py_BEGIN_ALLOW_THREADS宏临时释放GIL实现并行计算。
2025-10-05 08:16:54
947
2
原创 【Python】并发——线程
Python并发编程摘要 并发(Concurrency)指在同一时间段内交替处理多个任务(如边下载边看视频),而并行(Parallelism)是真正同时执行多个任务。Python受GIL限制,多线程在CPU密集型任务中无法提速,但适合IO密集型任务。Python提供三种并发方式:多线程(threading,适合IO)、多进程(multiprocessing,适合CPU计算)和异步IO(asyncio,适合高并发IO)。创建线程有函数式(Thread(target=))和继承类两种方式。守护线程(daemon
2025-09-28 21:15:20
658
原创 【Python】上下文管理器
上下文管理器是Python中用于管理资源(如文件、数据库连接、锁等)的机制,通过with语句简化资源获取和释放的代码。其核心原理是实现__enter__()和__exit__()方法:__enter__()在代码块执行前初始化资源,__exit__()确保无论是否发生异常都能正确释放资源。常见使用场景包括文件操作、数据库连接等,可以有效避免资源泄漏问题。自定义上下文管理器只需实现这两个方法,还能在__exit__()中处理特定异常。相比try-finally方式,上下文管理器使代码更简洁、安全。
2025-09-26 11:25:10
1274
原创 【Python】文件处理(二)
本文介绍了Python中文件与目录属性操作和权限管理的常用方法。主要内容包括:1)判断文件/目录是否存在(os.path.exists()和Path.exists());2)判断文件类型(文件、目录、符号链接);3)获取文件大小和时间属性;4)文件权限管理(修改权限os.chmod、检查权限os.access);5)文件所有权操作(仅限Unix系统)。文中提供了多个实用代码示例,并说明了跨平台注意事项。最后给出了一个综合性的文件信息检查工具实现,可快速获取文件类型、大小、时间属性等信息。这些操作是文件系统编
2025-09-25 23:17:00
970
原创 【Python】文件处理(一)
Python文件处理涉及打开、读写和关闭文件。使用open()函数打开文件,返回文件对象,支持多种模式(如'r'读、'w'写、'a'追加)。写入方法包括write()、writelines()和print(file=f)。推荐使用with语句自动管理文件关闭。注意编码问题(推荐utf-8)和模式选择,避免数据丢失。写入模式分为覆盖写('w')、追加写('a')和安全写('x')。
2025-09-25 19:38:49
1228
原创 【Python】生成器
生成器摘要 生成器是一种特殊的迭代器,通过yield关键字实现按需生成数据的特性。与普通函数不同,生成器函数可以暂停和恢复执行,保持中间状态,适用于大数据处理、无限序列等场景。创建方式包括生成器函数(含yield)和生成器表达式。关键特点包括: 惰性计算,节省内存 支持send()传值、throw()抛异常等交互操作 通过yield from实现生成器委托 遵循迭代器协议(__iter__和__next__方法) 典型应用包括流式数据处理、大文件读取和协程实现。
2025-09-24 20:50:49
1178
原创 【Python】正则表达式
正则表达式是一种用于匹配和处理字符串的模式规则,几乎所有编程语言都支持。它由普通字符和元字符(特殊符号)组成,可实现字符匹配、数量限定、位置锚定等功能。Python中使用re模块处理正则表达式,常用函数包括match()(开头匹配)、search()(全局搜索)、findall()(返回所有匹配)和finditer()(返回匹配迭代器)。正则表达式广泛应用于数据验证、文本处理、日志分析和爬虫等场景,但需注意其可读性差、性能问题和语言差异等局限性。
2025-09-24 17:48:32
1132
原创 【Python】迭代器
迭代器是Python中实现迭代协议的对象,包含__iter__()和__next__()方法。可迭代对象(如列表、元组等)通过iter()生成迭代器,迭代器通过游标记录当前位置并按需返回元素。for循环本质上是迭代器协议的封装。自定义迭代器可用于实现特殊序列(如倒计时)或惰性计算,需注意迭代器是一次性消耗的。相比列表,迭代器具有内存效率优势,适合处理大数据流。
2025-09-23 23:20:31
1004
原创 【Python】面向对象(四)
单例模式是确保一个类仅有一个实例的设计模式,适用于需要全局唯一对象的场景(如数据库连接、日志对象)。Python中实现单例的常见方法包括:1)基于__init__检查实例是否存在;2)重写__new__方法控制实例创建(推荐);3)使用装饰器封装类实现复用;4)通过元类高级控制类实例化。各种方法适用场景不同,从简单项目到框架开发均可选择对应方案。包装类则通过装饰器模式增强类功能,典型应用包括日志记录、权限校验等,实现核心逻辑与扩展功能的解耦。
2025-09-23 02:43:20
1015
原创 【Python】面向对象(三)
面向对象编程中的抽象与接口 摘要:面向对象编程(OOP)的核心原则之一是抽象,它通过隐藏实现细节、仅暴露必要接口来简化复杂度。在Python中,抽象通过两种方式实现:数据抽象(隐藏数据内部表示)和过程抽象(隐藏方法实现细节)。抽象类(使用abc模块)强制子类实现特定方法,但不能直接实例化。Python没有内置接口关键字,但可通过抽象基类模拟接口功能,定义方法契约而不提供实现。与抽象类不同,接口只包含抽象方法,是纯粹的规范。Python支持正式接口(使用ABC强制实现)和非正式接口(基于鸭子类型),体现了其动
2025-09-22 21:07:15
1242
原创 【Python】面向对象(二)
摘要:本文系统介绍了面向对象编程中的继承机制,包括单继承、多继承、多层继承等多种形式。重点讲解了继承的概念、方法重写、super()函数的使用以及方法解析顺序(MRO),并通过Python代码示例展示了不同继承方式的应用场景。文章还阐述了继承与多态的关系,说明如何通过继承实现代码复用和功能扩展。最后简要介绍了多重继承的概念及其典型应用场景。
2025-09-22 02:59:42
896
原创 【Python】面向对象(一)
面向对象编程(OOP)是一种以对象为核心的编程范式,通过类定义对象的属性和方法,实现数据与行为的封装。OOP相比过程式编程更符合现实思维,具有易维护、易扩展等优势,其四大特性包括:类与对象(类作为模板实例化为对象)、封装(隐藏内部实现)、继承(子类复用父类特性)和多态(不同类实现相同接口)。Python中通过class定义类,__init__方法初始化对象属性,self表示对象自身。类变量被所有实例共享,实例变量则独立存在。OOP还支持动态属性操作和内置类属性访问,为程序开发提供了灵活性和可维护性。
2025-09-21 17:31:15
1309
原创 【Python】模块
Python模块指南摘要 本文系统介绍了Python模块的核心概念与使用方法。主要内容包括:模块的基本概念(.py文件包含函数/类/变量)、导入方式(import/from/as)、搜索路径机制以及标准库模块分类。详细讲解了自定义模块创建、相对路径导入和模块属性(name、file、doc__等)的特殊用法。特别强调了模块的代码重用、结构化管理和封装特性,并提供了最佳实践建议:模块命名规范、避免命名冲突、合理使用__init.py等。最后介绍了模块高级用法如dir()查看内容、importlib.reloa
2025-09-21 02:16:31
418
原创 【Python】数组
摘要:数组是一种线性数据结构,存储相同类型的元素,通过索引实现快速访问。Python中通过array模块创建严格数组,需指定元素类型码,保证内存高效和类型安全。数组支持动态扩容,适用于数据存储、数学运算等场景。与Python列表不同,数组要求元素类型一致,适合数值计算等高性能需求。
2025-09-20 22:26:09
1327
原创 【Python】错误和异常
Python错误与异常处理指南 语法错误(Syntax Error)是代码不符合Python语法规则时发生的错误,如缺少冒号、缩进错误或拼写错误。Python会在解析阶段检测到这些错误并阻止程序运行。运行时异常(Exception)则是程序执行过程中遇到的错误,如除以零或类型转换错误。 Python使用try-except语句处理异常,可捕获特定异常类型,并提供else和finally子句分别处理无异常和必须执行的场景。用户还可以通过raise主动抛出异常,或继承Exception类创建自定义异常。合理使用
2025-09-20 17:14:45
1914
原创 【Python】字典
本文介绍了Python字典的基本概念、创建方法和访问方式。字典是键值对的无序可变容器,通过键快速查找值,底层采用哈希表实现高效操作。创建字典可通过花括号{}、dict()构造函数、fromkeys()方法和字典推导式。访问字典项主要有两种方式:方括号[]直接访问(键不存在会报错)和get()方法安全访问(可设默认值)。字典键必须唯一且不可变,值可以是任意类型,推荐使用get()方法避免KeyError。字典还支持keys()、values()和items()等方法进行迭代访问。
2025-09-19 21:58:20
1257
原创 【Python】集合
本文介绍了Python集合的基本概念和操作方法。集合是一种无序、元素唯一的数据结构,底层通过哈希表实现。主要内容包括:集合的创建方式(空集合、花括号、set()函数、推导式等)、访问方法(for循环、成员运算符、子集判断等)、添加元素的注意事项(必须为不可变对象)。文章还对比了不同创建方式的性能特点,并介绍了不可变集合frozenset的用法。最后总结了集合运算(交集、并集等)和访问元素的核心方式。
2025-09-19 14:16:22
705
原创 【Python】元组
本文介绍了Python中的元组(Tuple)数据类型,包括其基本概念、创建方法、访问方式和更新技巧。元组是一种有序不可变序列,常用于存储固定数据集合,如坐标、颜色值等。创建元组可使用小括号()或直接逗号分隔,单元素元组必须加逗号。访问元组元素支持索引、切片、解包等多种方式。由于元组不可变,"更新"操作实质是创建新元组,可通过拼接、切片组合或转换为列表修改后再转回元组实现。元组相比列表更高效,适合存储不需要修改的数据,且可作为字典键使用。
2025-09-16 17:51:42
1319
TCP/IP 协议总结文档
2025-07-12
图像灰度增强方法(Matlab)-对比度拉伸算法.zip
2025-04-10
前端开发:HTML标准标记语言的详尽指南与应用实例
2025-03-04
多线程技术在Java中的实现与应用场景
2025-03-03
C语言基础:深入解析语法结构与核心技术的应用
2025-03-03
网络编程基础知识详解 - IP地址、端口号与常用通信协议
2025-03-11
Java反射机制深入解析及应用实例
2025-03-11
Web开发中CSS基础知识详解及其应用场景
2025-03-14
Java编程中接口与内部类的定义、应用及其与其他概念的区别与联系
2025-02-27
Java面向对象编程:深入剖析继承与多态的应用及其优势
2025-02-27
面向对象编程(OOP)的核心概念与应用:类、对象及其实现
2025-02-27
Java编程语言中字符串相关类及其应用详解 - String、StringBuilder与StringBuffer
2025-02-27
Java编程中数组的基础概念、常用操作及其工具类的应用详解
2025-02-27
Java编程中的流程控制语句及循环结构解析
2025-02-27
Java编程基础详解:变量、数据类型与运算符的应用
2025-02-27
Java I/O流及其应用详解:字节流、字符流及相关工具类全面解析
2025-02-27
Java枚举与注解的应用及其实现技巧详解
2025-02-26
Java核心技术系列:常用核心类及时间API详解与实战
2025-02-26
Java编程中的泛型与集合应用解析-原理、实现及常见操作全面讲解
2025-02-26
Java编程中的异常处理详解:从基本概念到自定义异常
2025-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅