LeNet-5 & AlexNet

主要介绍LeNet 与 AlexNet,还 涉及到dropout, maxpooling, relu等概念 In this notebook we will motivate and implement from scratch two Convolutional Neural Networks (CNNs) that had big impacts on the field of Deep Learning. Namely, we will look at LeNet-5 (Yann LeCunn et al., 1989), which is considered one of the first CNNs ever and also AlexNet (Alex Krizhevsky et al., 2012), which won the 2012 ImageNet competition by an impressive marging and introduced many techniques that are considered state of the art even today (e.g. dropout, maxpooling, relu, etc). ...

November 16, 2025 · 9 min · 1757 words · Bob

ML-逻辑回归

输入x希望输出y=1的可能性最大 通过sigmod输出映射到0,1,其中0.5为分界线 逻辑回归,使用sigmod为激活函数的神经网络 Evaluating the cost function can be thought of as forward propagation and computing derivatives can be thought of as backpropagation. sigmod中权重越高,越自信,就是轻微的输入变化带来截然不同的结果 偏差的不同呢是的决策边界发生变化,就是说分界点改变了。 least squares不再适用(回归函数经过sigmoid,不再是Convex functions,即凸函数) Convex functions have the useful property that any local minimum is also a global minimum 第一幅为Convex functions,第二幅为非 Convex functions,后者的局部最小值不一定是全局最小值 logistic regression 使用 cross-entropy loss,这是它的凸函数 横轴预测值,竖轴损失:预测错误损失趋向无穷,预测正确损失为0 由最大似然 推出 交叉熵损失, 最大似然,思想是通过选择模型参数,使得 观测到的数据出现的概率最大。 ...

November 14, 2025 · 4 min · 834 words · Bob

Knowledge Graph & NLP Tutorial-(BERT,spaCy,NLTK)

NLP处理阶段 词法:切分为token uneasy” can be broken into two sub-word tokens as “un-easy”. 句法:1.检查句子结构有问题与否;2.形成一个能够体现词间句法关系的结果 eg: “The school goes to the boy” 语义:语义是否正确 semantic analyzer would reject a sentence like “Hot ice-cream” Pragmatic :歧义,中选择一个意思 知识图谱 存储提取的信息的一种方式。存储结构一般包括:a subject, a predicate and an object(主谓宾) 这些技术用于构建知识图谱 sentence segmentation, dependency parsing, parts of speech tagging, and entity recognition. 抽取实体 从句子中抽取主语和宾语,需要特殊处理的是复合名称和修饰词。 抽取关系 从句子中提取“主要的”动词 完成此二者之后便可进行知识图谱的构建,构建时最好将每个关系单独构建一个图谱,这是为了更好可视化。 BERT 适用于少数据集,question answering and sentiment analysis 任务 ...

November 10, 2025 · 2 min · 409 words · Bob

语义分割

图片基础 一个图片通常表现为3维矩阵,长、宽、通道,其中长*宽构成了分辨率,而有多少个通道就相当于有多少个"调色板"页面,这些调色板共同构成了每个像素点的色彩。 eg:1080p的rgb图片,就是1920*1080,通道数为3,其中rgb分别可取(0-255);而单通道就是灰度图像,取值(0-255) CNN CNN【卷积 → 激活 → 池化】 视为一个基础块,其中卷积层的每一个卷积核(滤波器)都可以提取一个特征,而激活层的Re-LU可以将卷积后此特征不明显的值设为0,再经过池化层,保留更为显著的特征(从“精确位置”到“空间存在”)。 随着多层的卷积输出,通道数增加,长、宽降低,而通道意义也变为了不同特征的强弱分布,有多少种通道就对应着多少种特征; 池化操作减少特征图中 参数数量、保留显著特征,只描述哪一个区域有,而不用具体到点。 经过一些列的卷积、激活、池化操作,最终得到长、宽小,而通道数大的特征图 ,经过全连接,输出一个1*n的向量,其中n为分类的数量。 卷积操作 整个卷积层的输出是N张特征图堆叠在一起,形成一个新的三维张量。 输出形状: [新高度, 新宽度, 卷积核数量] 例如: [222, 222, 32] (使用了32个3x3卷积核,尺寸略有缩小)。 此时,张量发生了变化:通道数从原始的3(R,G,B)变成了32,这32个通道不再是颜色,而是32种不同的基础特征的强度分布图。 整体流程 CNN演变 这里我的描述的网络是去掉了全连接层的CNN FCN FCN做出的重要改变是将CNN中全连接换为解码器,保留了原有CNN中的编码器(卷积+池化),这样,原有的CNN用于分类的一维输出,就变为了 “一个高分辨率的、与输入尺寸对应的像素级分类图”。 跳跃连接 编码器中,越浅的层次,图片分辨率更高位置更精细,越深的层次,图片的分辨率更低,but语义信息丰富(知道“这是什么”,但不知道在哪) 在ResNet中的应用 flowchart TD subgraph A [编码器 - 卷积与下采样] direction TB A1[输入图像<br>HxWx3] --> A2[卷积与池化<br>H/2 x W/2 x 64] --> A3[卷积与池化<br>H/4 x W/4 x 128] --> A4[卷积与池化<br>H/8 x W/8 x 256] --> A5[卷积与池化<br>H/16 x W/16 x 512] --> A6[卷积与池化<br>H/32 x W/32 x 1024] end subgraph B [解码器 - 上采样与跳跃融合] direction TB B1[预测层<br>H/32 x W/32 x N] -- 2x上采样 --> B2[score pool4<br>H/16 x W/16 x N] A4 -- 跳跃连接1 --> C1[1x1 卷积<br>H/8 x W/8 x 256] -- 1x1 卷积 --> C2[score pool3<br>H/8 x W/8 x N] B2 -- 与 score pool3 相加 --> B3[融合特征<br>H/8 x W/8 x N] -- 8x上采样 --> B4[最终输出<br>H x W x N] end A6 -- 核心改变: <br>全连接层 -> 卷积层 --> B1 A5 -- 跳跃连接2 --> B2 反卷积(转置卷积) 解码器中用于还原图像到输出大小的部分。 ...

October 25, 2025 · 1 min · 171 words · Bob

portal area identify

Task 寻找识别汇管区的方法 Superpixel Classification Approach (已过时) Superpixel:包含多个像素的图像块 思想: 将像素分组为有意义的视觉基元(超像素),再对这些基元进行特征提取和分类,从而高效地完成像素级的分割任务** 实施过程 1.分割成块(大块的像素) 2.提取特征(颜色,纹理,坐标 etc) 3.使用已标注的数据集进行训练(按照1,2步对数据集进行处理,为每个超像素块设置标签,eg:当前块70%的部分为天空,则说明此块的标签便是天空) 新数据:训练完成后对应新数据同样进行1,2步骤,后放入训练好的分类器中(这里提到的是随机森林) 结果:每个超像素均被赋予了标签,那么各个区域便被赋予了标签  补充: 随机森林分类器: 一堆决策树,投票得出最终结果,并且随机森林会进行数据抽样(有放回,即Bootstrap Aggregating)和特征抽样从而建立训练样本。 概括随机森林的特点:决策树,数据抽样、特征抽样、投票机制 Simple Linear Iterative Clustering(简单线性迭代聚类)即 SLIC 算法:用于生成超像素,我们仅需传入k,k为一个图片被分割成的超像素总数 CIELAB color space 和 image clustering 是SLIC用的 Local Binary Pattern(局部二值模式)即LBP 算法: 核心思想: 局部比较:以一个像素为中心,将其与周围固定半径内的 P 个邻域像素进行比较。 二值化:如果邻域像素的灰度值大于或等于中心像素的灰度值,则标记为 1;否则标记为 0。 生成编码:按顺序(例如顺时针)将这些 0 和 1 排列成一个二进制数串。 转换为十进制:将这个二进制数转换为一个十进制数,这个值就是该中心像素的LBP编码值。 **举例说明:**假设有一个3x3的区域,中心点灰度值为50,周围8个点的灰度值为 [55, 40, 60, 45, 50, 65, 35, 70]。比较后得到的二进制序列为:1, 0, 1, 0, 1, 1, 0, 1。将这个二进制数 10101101 转换为十进制,就是173。这个173就是这个中心点的LBP纹理值。 ...

October 17, 2025 · 1 min · 113 words · Bob

minIoC

常用注解结构 当前IOC容器设计结构 可以看到分为了注解、核心、包扫描器3部分。 注解部分最基础的bean注解我们实现了Component,3层架构中的注解我们实现了Controller,Service,Repository,这3者均“继承”了Component(其实是在其注解定义中加入了注解@Component). 待补充:Autowired,Qualifier,Scope BeanDefinition 核心部分,我们先介绍BeanDefinition,该类作为Bean元数据类,主要包含4个属性:用于反射类型,用于实例化的对象名,是否单例(2个属性用于描述)。 那么为何使用两个属性来表示是否单例? reply: 无需多余的字符串比较,可直接由其中一个字段的bool值直接得到是否单例。这在判断性能上提升多倍。 1 2 3 4 5 6 7 8 9 @Data @NoArgsConstructor @AllArgsConstructor public class BeanDefinition { private Class<?> beanClass; // Bean的Class对象(用于反射创建实例) private String beanName; // Bean的唯一标识符 private String scope; // 作用域(singleton/prototype) private boolean singleton; // 是否单例的快速标志位 } 两个字段表示是否单例,也带来了新问题:我们设置信息时需要保证二者的一致性 1 2 3 4 5 6 7 8 9 public void setScope(String scope) { this.scope = scope; this.singleton = "singleton".equals(scope); // 自动同步 } public void setSingleton(boolean singleton) { this.singleton = singleton; this.scope = singleton ? "singleton" : "prototype"; // 自动同步 } 构造器方面,我们提供2个不同参数的构造器,区别是后者可以传入scope(即是否单例) ...

October 12, 2025 · 5 min · 1049 words · Bob

机器学习的概统基础-01

基础知识补充: 期望 期望值,是指无限次重复一个随机实验,所能得到的长期平均结果。它是所有可能结果的概率加权和。 计算方法:每个可能的结果乘以其发生的概率,然后将所有乘积相加。 E(X)=∑[xi​⋅P(X=xi​)] (对于连续型变量,使用积分) 联系By大数定律 平均值和期望值通过大数定律 被深刻地联系在一起。 大数定律指出:当试验次数(样本容量 n)足够大时,样本的平均值 xˉ 会无限接近总体的期望值 E(X)。 这就像在掷骰子的例子中,你掷的次数越多,你的平均点数就越接近理论期望值3.5。 通过例子区分平均值和期望:平均值是对已经发生的数据的概括,而期望值是对未来可能性的预测 方差 方差 是衡量随机变量与其平均值(期望值)的偏离程度的量。它描述了数据的离散程度。 计算公式:对于一个随机变量 X,其方差 Var(X) 定义为: Var(X)=E[(X−E[X])2] 直观理解: 方差大:数据点散布得很开,远离均值。不确定性高。 方差小:数据点紧密地聚集在均值周围。不确定性低。 中心极限定理 中心极限定理描述的是样本平均值分布 正态分布 正态分布描述的是数据在其平均值附近波动 正态分布的期望为 μ 区别方差和标准差 后者反应了数据在平均值上下的波动范围,前者由于是后者的平方,更多的是反映数据的分散程度,方差越大,数据越分散。 条件期望 普通期望(无条件期望):E[y] 这是随机变量 y 的全局平均值。它回答的问题是:“在所有可能的情况下,y 平均来看是多少?” 例子:E[身高] = 全体中国成年男性的平均身高(比如175cm)。它不考虑任何其他信息。 条件期望:E[y | x] 这是在给定某些已知信息 x 的情况下,y 的条件平均值。它回答的问题是:“当我们知道了某个信息 x 后,y 平均来看是多少?” 例子:E[身高 | 年龄=10岁] = 已知一个男性年龄是10岁时,他的平均身高(比如140cm)。 核心思想:条件期望让我们能够根据已知信息,做出更精确、更“有条件”的预测。 条件期望随着条件的变化而变化: E[房价 | 面积=50平米] = 可能是 300万(小房子更便宜)。 ...

October 7, 2025 · 1 min · 164 words · Bob

大模型作业-本地部署deepseek-构建本地知识库

使用以下技术栈,部署本地LLM 应用框架:Dify(Docker版) 本地大模型:Ollama部署deepseek,嵌入模型:BGEM3 文档处理:Dify内置文本分割与向量化 Dify是什么? 相当于免编程的简单AI助手开发框架 Dify的缺点:大规模系统,性能要求过高(算法、延迟),资源受限(嵌入式、边缘计算),高度定制化 向量数据库:语义相似度检索 通过比对向量的"距离",也就是相似度进行检索。 每个数据数据(语句)中的词都对应一个已经生成的向量,然后再通过一系列复杂操作生成该句子的向量,在数据库中检索"距离"更近的向量 余弦相似度只关心方向,不关心长度。 测试问题 简单事实查询(测试基础检索) “什么是人工智能?” 多文档信息整合(测试跨文档能力) “RAG是什么意思?” 推理受限or出错(测试推理能力) 我把手机放在一本打开的书下面,然后合上了书。手机现在在哪里? 太阳什么时候时候从西边升起? 测试长文本细节丢失 问题1:“星穹项目的总负责人和预算是多少?” 模型可能回答: “总负责人是张三,预算为500万元。” 分析: 这两个信息都位于文档的开头部分。模型的注意力机制在开始时最为集中,因此很容易捕获并记住这些信息。此时没有细节丢失。 问题2(综合性问题,考验长距离信息整合):“请总结一下项目中需要与其他部门或外部供应商协作的关键点。” 模型理想答案应包含: 与风控部的李四合作解决金融模型偏差。(少了这个!!!!!!) 与王五的团队协作进行音频模块集成。 依赖外部供应商 “天眼”数据源的API服务。 模型可能回答(整合失败): “项目需要与王五的团队合作,并且依赖‘天眼’数据源。” 分析: 模型丢失了位于文档中部的“风控部李四” 这一关键协作方。因为它无法同时将文档开头、中部、末尾的稀疏信息点有效地关联和整合在一起。它只能抓取到最容易记住的(末尾的)和可能还记得的(开头附近的)信息,而中间部分的信息已经“蒸发”了。 测试全过程体现统计响应速度受限 本次部署所用的本地部署LLM流程总结和排错指南可以点击以下链接下载 本地部署LLM流程总结 排错指南

October 5, 2025 · 1 min · 40 words · Bob

就业要求分析

To be or not to be … That is a question 后端开发/研发方向 滴滴公司 携程 阿里云 大模型-AI 京东 先深入理解机器学习算法的理论基础,然后学习使用一个或多个主流的机器学习框架来动手实践,将理论应用于解决实际问题。 阿里云 GO other way 车企风华 Tesla 算法工程师,CV方向-上海 The Role Tesla’s Data Algorithms team is at the forefront of industrial intelligence R&D. Through our self-developed data and algorithm platform, we empower critical business areas such as manufacturing, supply chain, sales, service, and charging networks, transforming massive data into high-value assets that drive better products and enhanced user experiences. ...

September 26, 2025 · 3 min · 430 words · Bob

练习使用MybatisPlus

基础使用 使用步骤 引入依赖 自己的mapper接口继承BaseMapper 我们可以看到(下图)baseMapper有着一系列的基础数据库操作 实体类配置 MybatisPlus通过以下实现CRUD数据库表信息 •默认以类名驼峰转下划线作为表名 •默认把名为id的字段作为主键 •默认把变量名驼峰转下划线作为表的字段名 MybatisPlus的常用注解: •@TableName:指定表名称及全局配置 •@TableId:指定id字段及相关配置 •@TableField:指定普通字段及相关配置 @TableField的常见场景: •成员变量名与数据库字段名不一致 •成员变量名以is开头,且是布尔值 •成员变量名与数据库关键字冲突 •成员变量不是数据库字段 yaml配置 1 2 3 4 mybatis-plus: #注册别名后,就不用在xml中写全路径名称了 type-aliases-package: com.itheima.mp.domain.po # 其它很多配置都不用配置,使用默认值即可 mybatisPlus不仅实现了一些基础的单表查询mapper,甚至提供了service接口,借助该接口能够完成一些基础业务 IService 通过一个接口和一个实现类来协调完成这些基础功能的实现 扩展插件 逻辑删除 直接再yaml中配置,配置完成后,原来删除方法如,deleteById,就会执行逻辑删除 1 2 3 4 5 6 7 8 9 mybatis-plus: global-config: db-config: # 逻辑删除字段名(在数据表中的) logic-delete-field: deleted # 逻辑已删除值(默认为 1) logic-delete-value: 1 # 逻辑未删除值(默认为 0) logic-not-delete-value: 0 JSON处理器 能够将数据库中存储的json数据,解析为对象 ...

September 18, 2025 · 1 min · 200 words · Bob