当前位置: 首页 > news >正文

人工智能学习路线全链路解析

一、基础准备阶段(预计 2-3 个月)

(一)数学知识巩固与深化
  • 线性代数(约 1 个月)
    • 矩阵基础:回顾矩阵的定义、表示方法、矩阵的基本运算(加法、减法、乘法),理解矩阵乘法不满足交换律等特性,通过练习题加深对运算规则的掌握,例如计算简单的矩阵乘法式子、求矩阵的转置等。
    • 向量空间与线性变换:学习向量空间的概念,包括向量的线性组合、线性相关与线性无关,掌握线性变换的定义、几何意义以及如何用矩阵表示线性变换,借助图形示例理解向量在不同线性变换下的变化情况。
    • 特征值与特征向量:深入理解特征值和特征向量的定义、计算方法(通过求解特征方程)以及它们在数据降维、主成分分析等方面的应用,自己动手推导特征值和特征向量的计算公式,并结合实际的二维或三维矩阵实例进行计算和分析。
    • 学习资源:《线性代数及其应用》这本书讲解详细且案例丰富,方便你系统学习;在线课程方面,Coursera 上的 “Linear Algebra for Machine Learning” 课程也很不错,有视频讲解和课后作业辅助巩固知识。
  • 概率论与统计学(约 1 个月)
    • 概率基础概念:复习概率的定义、古典概型、几何概型等基本概念,掌握条件概率、全概率公式、贝叶斯公式的推导和应用,通过做一些概率计算的练习题,如掷骰子、抽卡片等实际问题来熟悉这些公式。
    • 随机变量与概率分布:学习离散型随机变量(如伯努利分布、二项分布、泊松分布)和连续型随机变量(如均匀分布、正态分布、指数分布)的定义、概率密度函数、分布函数以及期望、方差等数字特征,绘制不同分布的概率密度函数图像,直观感受其分布特点,并通过实际例子计算随机变量的期望和方差。
    • 统计推断与参数估计:掌握最大似然估计、矩估计等参数估计方法的原理和步骤,理解假设检验的基本思想、步骤以及常见的检验方法(如 t 检验、卡方检验),自己动手利用给定的数据进行参数估计和假设检验的实践操作。
    • 学习资源:《概率论与数理统计》教材内容权威全面,可作为主要学习参考;edX 平台上的 “Probability-The Science of Uncertainty and Data” 课程能够帮助你深入理解概率论知识,搭配实际案例和作业巩固所学内容。
  • 微积分(约 1 个月)
    • 函数极限与连续:复习函数极限的定义、计算方法(如四则运算法则、洛必达法则等),理解函数连续的概念以及间断点的分类,通过求一些简单函数在特定点的极限值、判断函数的连续性等练习来巩固知识点。
    • 导数与微分:掌握导数的定义、几何意义、物理意义以及求导法则(基本函数求导公式、复合函数求导法则、隐函数求导法则等),理解微分的概念以及导数和微分的关系,对常见函数进行求导和微分的计算,并应用导数解决一些实际问题,如切线问题、变化率问题等。
    • 积分学:学习不定积分和定积分的定义、计算方法(换元积分法、分部积分法等),理解积分在求面积、体积等几何问题以及物理中的应用(如做功、路程计算等),通过大量的积分计算练习题来熟练掌握积分技巧。
    • 多元微积分(可选,若时间充裕):了解多元函数的极限、连续、偏导数、全微分等概念,掌握多元复合函数求导法则、隐函数求导法则以及多元函数的极值、最值问题,这部分内容对于理解深度学习中的梯度计算等有一定帮助,但如果时间紧张可以先初步了解,后续随着深度学习学习再深入探究。
    • 学习资源:《高等数学》同济大学版是经典教材,涵盖了全面的微积分知识;Khan Academy 网站上有详细的微积分课程视频,从基础概念到复杂的计算都有讲解,方便你随时学习。
(二)Python 语言强化学习(约 1-2 个月)
  • Python 基础语法(约 2 周)
    • 数据类型:学习 Python 的基本数据类型,如整数、浮点数、字符串、列表、字典、元组等,掌握它们的定义、初始化、访问、修改以及常用的操作方法,例如列表的切片操作、字典的键值对添加和删除等,通过编写简单的代码片段进行练习。
    • 控制结构:掌握条件判断语句(if-elif-else)、循环语句(for 循环、while 循环)的语法和使用场景,学会利用控制结构编写逻辑清晰的程序,如实现简单的猜数字游戏、打印九九乘法表等小程序来巩固对控制结构的运用。
    • 函数与模块:理解函数的定义、参数传递、返回值等概念,学会自定义函数来封装可复用的代码逻辑,同时了解 Python 的模块机制,如何导入和使用内置模块(如 math 模块用于数学计算)以及自定义模块,通过编写多个函数并组织成模块的方式来实践。
    • 学习资源:《Python 编程:从入门到实践》这本书非常适合零基础到入门的学习,语言通俗易懂,案例丰富;在慕课网、网易云课堂等在线学习平台上也有很多 Python 基础语法的免费课程可供选择。
  • Python 面向对象编程(约 2 周)
    • 类与对象:掌握类的定义、对象的创建以及类的成员变量和成员方法的概念,理解类的封装性、继承性和多态性,通过创建简单的类(如表示学生的类,包含姓名、年龄、成绩等属性以及学习、考试等方法)来实践面向对象编程的基本概念。
    • 特殊方法与魔法方法:学习 Python 中一些特殊的方法,如__init__(构造方法)、__str__(对象的字符串表示方法)等,了解它们在类的初始化、对象的打印输出等方面的作用,通过重写这些方法来定制类的行为。
    • 类的继承与多态:深入理解类的继承机制,包括单继承、多继承的实现方式以及如何在子类中重写父类的方法,掌握多态的概念以及通过接口或抽象类实现多态的方法,通过编写具有继承关系的类层次结构并利用多态特性实现不同功能的代码示例来巩固知识。
    • 学习资源:《Python 核心编程》这本书对 Python 面向对象编程有深入的讲解,配合书中的示例代码可以更好地理解相关概念;Python 官方文档中关于面向对象编程的部分也是权威的学习资料,详细介绍了各种语法和用法。
  • Python 科学计算库(约 2 周)
    • Numpy(约 1 周):学习 Numpy 库的基本数据结构(如 ndarray 数组),掌握数组的创建、索引、切片、形状改变等操作,熟悉 Numpy 提供的数学函数(如三角函数、统计函数等)以及线性代数运算函数(如矩阵乘法、求逆等),通过使用 Numpy 解决一些简单的数学计算和数据处理问题,如生成随机矩阵、进行矩阵运算等。
    • Pandas(约 1 周):掌握 Pandas 库中 Series 和 DataFrame 这两种核心数据结构的创建、索引、数据筛选、数据合并等操作,学会使用 Pandas 进行数据读取(如读取 CSV 文件)、数据清洗(处理缺失值、重复值等)以及简单的数据分析(计算均值、中位数等统计指标),通过实际的数据集(如泰坦尼克号乘客数据集)进行数据处理和分析的实践操作。
    • Matplotlib(约 1 周):学习 Matplotlib 库的基本使用方法,包括绘制折线图、柱状图、散点图、饼图等常见的统计图,掌握如何设置图表的标题、坐标轴标签、图例等元素,通过给定的数据生成不同类型的可视化图表,直观展示数据特征和关系,例如绘制某城市一年的气温变化折线图等。
    • 学习资源:《Python 数据科学手册》涵盖了 Numpy、Pandas、Matplotlib 等常用科学计算库的详细讲解,配合大量的代码示例,方便你快速上手;官方文档也是很好的参考资料,对于各库的函数参数、用法细节等都有准确的描述。

二、核心知识学习阶段(预计 3-4 个月)

(一)机器学习基础(约 2-3 个月)
  • 机器学习基本概念(约 2 周)
    • 定义与分类:深入理解机器学习的定义,即让计算机从数据中学习规律并进行预测或决策的学科。掌握机器学习按照学习方式(监督学习、无监督学习、半监督学习、强化学习)、数据类型(离散型、连续型)、模型结构(线性模型、非线性模型)等不同维度的分类方式,通过列举不同类型的实际应用场景(如监督学习的房价预测、无监督学习的客户聚类等)来加深对分类的理解。
    • 模型评估指标(约 1 周):学习常用的模型评估指标,在监督学习中,对于分类问题要掌握准确率、召回率、F1 值、精确率、ROC 曲线、AUC 值等指标的计算方法和含义,对于回归问题要掌握均方误差、平均绝对误差、决定系数(R²)等指标;在无监督学习中,了解聚类的评估指标如轮廓系数、戴维森堡丁指数等。通过实际的分类和回归模型预测结果数据来计算这些指标,体会不同指标在评估模型性能方面的优劣。
    • 过拟合与欠拟合(约 1 周):理解过拟合(模型在训练数据上表现很好,但在测试数据上表现差,对噪声过度拟合)和欠拟合(模型过于简单,不能很好地拟合训练数据和捕捉数据规律)的概念、产生原因以及如何通过调整模型复杂度、增加数据量、使用正则化等方法来防止过拟合和改善欠拟合情况,通过对比不同复杂度模型在相同数据集上的表现来直观认识这两种现象。
    • 学习资源:《机器学习》(周志华著)的前几章对机器学习的基本概念有清晰且深入的讲解,搭配书中的案例分析可以帮助你很好地理解;Coursera 上 Andrew Ng 教授的 “Machine Learning” 课程也会详细介绍这些基础知识,并且有相应的编程作业让你实践。
  • 经典机器学习算法(约 2-3 个月)
    • 线性回归(约 2 周)
      • 原理推导:从最小二乘法的角度出发,推导线性回归模型的损失函数(均方误差)以及通过求导等方式找到最优参数的过程,理解如何通过最小化损失函数来使模型拟合数据,自己动手推导整个推导过程,加深对原理的理解。
      • 代码实现:使用 Python(结合 Numpy、Pandas 等库)实现简单的线性回归模型,包括数据的准备(读取、预处理等)、模型的训练(计算参数)以及预测功能,通过对简单的线性数据集(如模拟的房屋面积与价格关系的数据)进行训练和预测,验证模型的正确性,并尝试调整不同的参数观察模型效果。
      • 拓展应用:了解线性回归的一些变体,如岭回归(加入 L2 正则化)、Lasso 回归(加入 L1 正则化),理解它们在解决过拟合等问题上的作用以及如何实现,通过对比不同回归方法在含有噪声的数据集上的表现来体会其优势。
    • 逻辑回归(约 2 周)
      • 原理推导:理解逻辑回归作为一种分类模型,是如何将线性回归的输出通过 Sigmoid 函数等激活函数转化为概率值,进而进行分类决策的,推导其损失函数(对数似然损失)以及参数更新的梯度下降算法过程,自己动手推导逻辑回归的数学原理,包括从概率角度的理解和优化过程。
      • 代码实现:同样使用 Python 实现逻辑回归模型,实现数据的处理、模型训练(利用梯度下降等优化算法更新参数)和预测功能,通过对简单的二分类数据集(如鸢尾花数据集的部分类别划分)进行实验,验证模型分类效果,并尝试调整学习率等参数优化模型性能。
      • 多分类拓展:学习逻辑回归如何扩展到多分类问题,如采用一对多(One-vs-Rest)或一对一(One-vs-One)的策略,通过实际的多分类数据集(如手写数字识别的简化数据集)进行实践,对比不同策略的优缺点。
    • 决策树(约 2 周)
      • 原理与构建:理解决策树的基本原理,即通过对特征进行划分来构建一棵类似树状的决策结构,掌握决策树的构建算法,如 ID3(基于信息增益选择特征)、C4.5(基于信息增益比选择特征)、CART(基于基尼指数选择特征进行分类和基于均方误差选择特征进行回归)等算法的原理和区别,通过手动构建简单的决策树示例(如根据天气、温度等特征判断是否适合户外运动)来理解特征选择和树的构建过程。
      • 剪枝处理:学习决策树的剪枝技术,包括预剪枝(在树构建过程中提前停止生长)和后剪枝(构建完树后对一些子树进行修剪)的方法和作用,理解它们是如何防止决策树过拟合的,通过对比剪枝前后决策树在测试数据集上的性能来体会剪枝的效果。
      • 代码实现与应用:使用 Python 中的相关库(如 Scikit-learn)实现决策树模型,对不同的数据集(如分类的蘑菇数据集、回归的汽车价格预测数据集)进行训练和应用,调整不同的参数(如树的最大深度、最小样本数等)观察模型性能变化。
    • 支持向量机(约 2 周)
      • 原理与几何解释:深入理解支持向量机的基本思想,从最大间隔分类器的角度出发,理解如何通过寻找最优超平面来划分不同类别的数据,掌握其基于拉格朗日对偶和 KKT 条件的数学推导过程(可以先理解大致原理,再逐步深入推导细节),通过二维平面上简单的数据分布示例,从几何角度直观解释支持向量机的工作原理以及支持向量的概念。
      • 核函数与非线性分类:学习支持向量机中核函数(如线性核、多项式核、高斯核等)的作用,即如何将低维空间的数据映射到高维空间,使得原本线性不可分的数据在高维空间变得线性可分,通过实际的非线性可分数据集(如月牙形数据集)对比使用不同核函数的支持向量机模型的分类效果,体会核函数的神奇之处。
      • 代码实现与参数调整:使用 Python 实现支持向量机模型,学会调整参数(如惩罚参数、核函数参数等)来优化模型性能,通过在多个标准数据集(如鸢尾花数据集、手写数字数据集等)上进行实验,观察不同参数设置下模型的准确率、召回率等指标变化情况。
    • K 近邻(约 2 周)
      • 原理与距离度量:掌握 K 近邻算法的基本原理,即根据给定的测试样本,在训练集中找到与其距离最近的 K 个样本,然后根据这 K 个样本的类别(多数表决原则)来确定测试样本的类别(对于分类问题)或根据这 K 个样本的数值特征(平均等计算方式)来预测测试样本的数值(对于回归问题),学习常用的距离度量方法(如欧几里得距离、曼哈顿距离、闵可夫斯基距离等)及其特点,通过简单的二维坐标点数据计算不同距离度量下的近邻情况,对比不同距离度量对分类或回归结果的影响。
      • K 值选择与权重设定:理解 K 值的选择对 K 近邻模型性能的影响(K 值过小容易过拟合,K 值过大容易欠拟合),掌握如何通过交叉验证等方法来选择合适的 K 值,同时了解可以给不同距离的近邻赋予不同权重(如距离越近权重越大)来优化模型性能,通过实际数据集(如鸢尾花数据集)进行不同 K 值和权重设置的实验,观察模型准确率等指标变化。
      • 代码实现与优化:使用 Python 实现 K 近邻算法,对不同类型的数据集(分类和回归数据集)进行训练和预测,尝试采用数据预处理(如归一化、标准化)等手段优化模型性能,提高预测的准确性。
    • K-Means 聚类(约 2 周)
      • 原理与算法流程:理解 K-Means 聚类算法的基本思想,即通过初始化 K 个聚类中心,然后将数据点分配到距离最近的聚类中心所属的类别,再重新计算每个类别的聚类中心,不断迭代直到聚类中心不再变化或达到设定的迭代次数为止,通过手动模拟简单数据集(如二维平面上的散点数据)的聚类过程,熟悉算法的每一步操作。
      • 聚类中心初始化与评价指标:了解不同的聚类中心初始化方法(如随机初始化、K-Means++ 初始化等)对聚类结果的影响,掌握常用的聚类评价指标(如轮廓系数、戴维森堡丁指数等)的计算方法和含义,通过对比不同初始化方法在相同数据集上得到的聚类结果以及使用评价指标来评估聚类质量,选择合适的初始化方法和聚类数量。
      • 代码实现与拓展应用:使用 Python 实现 K-Means 聚类算法,对实际的数据集(如客户消费行为数据进行客户群体聚类、图像像素数据进行图像分割等)进行聚类分析,尝试将 K-Means 聚类与其他算法结合(如先聚类再进行分类)拓展应用场景,观察聚类效果并进行分析。
    • 学习资源:《机器学习实战》(Hands-On Machine Learning with Scikit-Learn and TensorFlow)这本书通过大量的代码示例详细展示了如何使用 Python 实现上述机器学习算法,非常适合实践操作;Coursera 和 edX 平台上也有。

二、核心知识学习阶段(预计 3-4 个月)

(一)机器学习基础(约 2-3 个月)
  • 经典机器学习算法(约 2-3 个月)续
    • 集成学习(约 2 周)
      • 原理与思想:理解集成学习的基本概念,即通过结合多个机器学习模型来提高预测性能。掌握常见的集成学习方法,如 Bagging(自助采样后并行训练多个基模型,例如随机森林就是基于决策树的 Bagging 方法)和 Boosting(串行训练基模型,后一个模型重点关注前一个模型的错误样本,像 Adaboost、梯度提升树等)的原理和区别,通过简单的比喻或示例来理解这两种集成策略的运作方式,比如把 Bagging 想象成一群人各自独立做决策然后综合结果,而 Boosting 类似一个人不断根据之前的错误去改进决策。
      • 随机森林(约 1 周):深入学习随机森林作为 Bagging 的典型代表,它是如何在构建决策树的过程中引入随机特征选择来增加模型的多样性,掌握随机森林的参数(如树的数量、每棵树的最大深度、特征采样比例等)对模型性能的影响,通过实际的分类和回归数据集(如波士顿房价数据集用于回归、信用卡欺诈检测数据集用于分类)进行实验,对比不同参数设置下随机森林的表现,体会其在处理高维数据、防止过拟合等方面的优势。
      • 梯度提升树(约 1 周):对于梯度提升树,理解它是如何基于梯度下降的思想来依次训练基模型(通常也是决策树),使得损失函数逐步减小,掌握其重要的参数(如学习率、树的深度、迭代次数等)调整方法以及正则化手段(如子采样、收缩等),通过在一些复杂数据集上(如竞赛数据集的简化版本)进行训练和优化,观察其在提升模型性能方面的效果,并且对比它与随机森林在相同数据集上的不同表现,了解各自适用的场景。
    • 学习资源:除了前面提到的《机器学习实战》等书籍外,《统计学习导论:基于 R 应用》这本书也对上述机器学习算法有详细且深入浅出的讲解,同时提供了很多实例帮助理解;在在线课程方面,Coursera 上的 “Advanced Machine Learning Specialization” 课程会对集成学习等内容进行更深入的探讨,并有相应的编程作业辅助巩固知识。
(二)深度学习基础(约 1-2 个月)
  • 神经网络原理(约 2 周)
    • 神经元与神经网络结构:从生物神经元的启发入手,理解人工神经元的基本结构(输入、权重、激活函数、输出),进而掌握神经网络的分层结构(输入层、隐藏层、输出层)以及各层之间是如何传递信息的,通过简单的示意图画出不同层数的神经网络结构,标注出各部分的组成,理解信息从前向后传播的过程(前向传播)。
    • 激活函数(约 1 周):深入学习常见的激活函数,如 Sigmoid 函数、Tanh 函数、ReLU 函数(及其变体,如 Leaky ReLU 等)的表达式、图像特点、优缺点以及适用场景,理解激活函数在引入非线性因素、避免梯度消失等方面的重要作用,通过绘制不同激活函数的图像,对比它们在不同区间的取值变化,分析为何在不同的网络结构中会选择不同的激活函数,例如在隐藏层常用 ReLU 来解决梯度消失问题,在输出层根据是分类还是回归任务选择合适的激活函数。
    • 损失函数与优化算法(约 1 周):掌握不同任务对应的常见损失函数,如分类任务中的交叉熵损失、回归任务中的均方误差损失等的计算方法和原理,理解为什么要选择这样的损失函数来衡量模型预测结果与真实值的差异;同时学习常用的优化算法,如梯度下降(包括批量梯度下降、随机梯度下降、小批量梯度下降)及其改进版本(如 Adagrad、Adadelta、Adam 等)的原理、更新规则以及各自的优缺点,通过简单的数学推导理解优化算法是如何根据损失函数的梯度来更新神经网络的权重,以逐步减小损失函数值,达到优化模型的目的。
    • 学习资源:《深度学习》(Ian Goodfellow 著)这本书的开篇部分对神经网络的基础原理有着非常全面且深入的讲解,配合书中的数学推导和实际案例能让你很好地理解这些核心概念;Coursera 上的 “Deep Learning Specialization” 课程的前几门课也会系统地介绍神经网络的基础知识,并有配套的编程作业和代码示例供你实践。
  • 深度学习框架(约 2-4 周)
    • TensorFlow(约 1-2 周)
      • 基本概念与安装:学习 TensorFlow 的基本概念,如张量(Tensor)的定义、操作以及计算图(Computation Graph)的构建方式,掌握如何在本地环境或云端环境(如 Google Colab,方便快捷且无需复杂的本地配置)安装 TensorFlow,按照官方文档的指引完成安装步骤,并通过简单的代码示例验证安装是否成功,例如创建一个简单的张量并输出其信息。
      • 模型构建与训练(约 1 周):了解如何使用 TensorFlow 的高级 API(如 Keras,它集成在 TensorFlow 中,方便快捷地构建模型)来构建常见的神经网络模型(如简单的多层感知机用于分类或回归任务),掌握模型的编译(指定损失函数、优化器、评估指标等)、训练(传入训练数据进行多轮迭代训练)以及预测(对新的数据进行预测输出)的完整流程,通过一个小型的数据集(如 MNIST 手写数字数据集的简化版本)进行模型构建和训练的实践操作,观察训练过程中的损失值、准确率等指标变化情况。
      • 模型保存与部署(约 1 周):学习如何保存训练好的 TensorFlow 模型,以便后续在不同的环境中进行部署和使用,掌握常见的模型保存格式(如 SavedModel 格式)以及加载模型进行预测的方法,同时了解如何将 TensorFlow 模型部署到服务器端(如使用 TensorFlow Serving)或者移动端(如通过 TensorFlow Lite 进行模型压缩和移动端适配),通过实际操作将一个简单的分类模型进行保存并尝试在本地模拟的服务器环境或移动端模拟器中进行部署和预测验证。
    • PyTorch(约 1-2 周)
      • 基本概念与安装:类似地,学习 PyTorch 的基本概念,如张量(torch.Tensor)的操作、自动求导机制(基于 torch.autograd 模块,与 TensorFlow 的计算图机制有所不同,但都能实现自动计算梯度的功能),掌握在本地环境安装 PyTorch 的方法,通过官方文档和示例代码进行安装,并创建简单的张量进行一些基本运算(如加法、乘法、求梯度等)来熟悉其操作。
      • 模型构建与训练(约 1 周):掌握在 PyTorch 中构建神经网络模型的方式,通过定义类继承自 torch.nn.Module 来构建自定义的网络结构,了解如何使用 PyTorch 提供的各种层(如线性层、卷积层、循环层等)进行组合搭建模型,掌握模型的训练流程,包括定义损失函数、选择优化器以及进行多轮迭代训练(利用循环结构实现前向传播、计算损失、反向传播更新参数等操作),同样以 MNIST 数据集为例,使用 PyTorch 构建模型并进行训练,对比与 TensorFlow 在模型构建和训练流程上的异同点。
      • 模型保存与部署(约 1 周):学习 PyTorch 中模型保存的方法(如保存模型的参数状态字典或者整个模型结构和参数)以及如何加载保存的模型进行后续的预测操作,了解 PyTorch 在部署方面的一些工具和方法(如将模型转换为 ONNX 格式以便在不同的框架和平台上兼容使用等),通过实际操作对训练好的模型进行保存和部署验证,体会其在实际应用中的便利性。
    • 对比与选择(约 1 周):通过对 TensorFlow 和 PyTorch 在模型构建的便捷性、训练速度、对不同硬件(如 GPU 的支持情况)、社区活跃度、文档丰富度等多方面进行对比分析,了解它们各自的优势和适用场景,以便在后续不同的项目实践中能够根据具体需求合理选择使用的深度学习框架,例如在科研领域可能 PyTorch 的动态图机制更便于快速实验和调试,而在工业界大规模部署时 TensorFlow 的生态系统可能更具优势。
    • 学习资源:TensorFlow 官方文档和 PyTorch 官方文档都是非常权威且详细的学习资料,涵盖了从基础概念到高级应用的所有内容,并且有大量的代码示例可供参考;此外,《Python 深度学习》这本书对使用 Python 结合 TensorFlow 和 PyTorch 进行深度学习实践有很好的指导作用,通过书中的案例可以快速上手这两个框架。

三、进阶学习阶段(预计 4-6 个月)

(一)自然语言处理(约 2-3 个月)
  • 基础技术(约 1-2 个月)
    • 文本预处理(约 2 周)
      • 编码与字符集:学习计算机中字符的编码方式,如 ASCII 码、UTF-8 等,理解不同编码方式在表示文本时的特点和适用范围,掌握如何在 Python 中处理不同编码的文本文件,避免出现编码错误等问题,通过实际的文本文件读取和转换操作来熟悉编码相关知识。
      • 分词与词性标注(约 1 周):掌握常见的中文和英文分词方法,对于中文,了解基于规则、基于统计(如隐马尔可夫模型、最大熵模型等)以及基于深度学习的分词算法原理;对于英文,学习基于空格和标点符号的简单分词方式以及一些改进的方法。同时学习词性标注的概念和常用的词性标注工具(如 NLTK 库中的词性标注功能,在英文处理上有较好的应用),通过实际的文本段落进行分词和词性标注实践,观察不同方法的效果差异。
      • 命名实体识别(约 1 周):理解命名实体识别的任务定义,即识别文本中具有特定意义的实体(如人名、地名、组织机构名等),学习基于规则、机器学习(如支持向量机、条件概率模型等应用于特征工程后的实体识别)以及深度学习(如卷积神经网络、循环神经网络及其组合应用)的命名实体识别方法,通过公开的命名实体识别数据集(如 CoNLL2003 数据集)进行模型训练和识别效果验证,对比不同方法在准确率、召回率等指标上的表现。
    • 词向量表示(约 2 周)
      • One-Hot 向量与词袋模型(约 1 周):学习 One-Hot 向量这种简单的词表示方法,理解其优缺点(如维度高、稀疏性强、无法表示词与词之间的语义关系等),进而掌握词袋模型(将文本看作是词的集合,忽略词序,通过统计词频来构建文本表示)的概念、构建方法以及在文本分类等简单任务中的应用,通过对一些短文本(如新闻标题、产品评论等)构建 One-Hot 向量和词袋模型表示,进行文本相似度计算等简单操作,体会其局限性。
      • 分布式词向量(约 1 周):深入学习分布式词向量(如 Word2Vec 的 CBOW 和 Skip-gram 模型、GloVe 模型等)的原理、算法流程以及如何通过大量的文本数据训练得到词向量,理解这些词向量能够捕捉词与词之间的语义关系(如通过计算词向量的余弦相似度来衡量词的相似性,像 “国王” 和 “王后” 的词向量相似度较高),通过使用预训练的词向量(如 Google 提供的 Word2Vec 预训练模型或者斯坦福大学的 GloVe 预训练模型)在一些文本任务(如类比推理、文本聚类等)中进行应用,体会分布式词向量的优势,同时也可以尝试自己利用开源代码库(如 Python 的 gensim 库)基于小型文本数据集训练词向量,观察训练过程和结果。
    • 学习资源:《自然语言处理入门》这本书对自然语言处理的基础技术有详细且系统的讲解,结合大量的代码示例和实际案例,便于你快速入门;NLTK 官方文档提供了丰富的关于英文自然语言处理工具和方法的介绍,可以帮助你掌握英文文本处理的一些基础操作;对于中文自然语言处理,开源的结巴分词工具的文档以及相关的学术论文能让你了解中文分词等方面的技术细节。
  • 深度学习应用(约 1-2 个月)
    • 循环神经网络(约 2 周)
      • 原理与结构(约 1 周):深入理解循环神经网络(RNN)的基本结构,特别是其独特的循环连接方式,使得它能够处理序列数据,掌握不同类型的 RNN(如基本的 Elman 网络、Jordan 网络等)的特点和区别,通过绘制简单的 RNN 结构示意图,标注出各个时间步的输入、隐藏状态、输出等信息,理解信息在时间维度上的传递和处理过程,同时理解 RNN 在处理长序列数据时存在的梯度消失和梯度爆炸问题的原因。
      • 长短期记忆网络(LSTM)与门控循环单元(GRU)(约 1 周):学习 LSTM 和 GRU 这两种改进的循环神经网络结构,掌握它们通过引入门控机制(如遗忘门、输入门、输出门等)来解决梯度消失和梯度爆炸问题的原理,对比它们与基本 RNN 在结构、计算复杂度、对长序列数据处理能力等方面的差异,通过实际的序列数据(如时间序列的气温预测数据、文本序列数据等)分别使用 RNN、LSTM、GRU 构建模型进行预测,观察它们在不同长度序列上的表现,体会 LSTM 和 GRU 的优势。
    • 注意力机制(约 2 周)
      • 原理与作用(约 1 周):理解注意力机制的基本概念,即模拟人类在处理信息时能够聚焦重点内容的能力,在自然语言处理中,它可以帮助模型更好地关注文本中的关键部分,提高对长文本等复杂序列数据的处理能力。学习不同类型的注意力机制(如基于内容的注意力、基于位置的注意力等)的原理和实现方式,通过简单的示例(如机器翻译中对源语言句子不同部分的关注情况)来直观理解注意力机制是如何工作的。
      • 应用与拓展(约 1 周):掌握注意力机制在自然语言处理中的广泛应用,如在机器翻译、文本摘要、问答系统等任务中的应用,通过使用开源的深度学习框架(如 TensorFlow 或 PyTorch)结合注意力机制构建相应的自然语言处理模型,对比添加注意力机制前后模型在任务准确率、召回率等指标上的表现,体会其对提升模型性能的重要作用,同时了解基于注意力机制的一些前沿研究和拓展应用方向,如多头注意力机制在 Transformer 架构中的应用等。
    • 自然语言处理任务实践(约 2 周):选择几个典型的自然语言处理任务,如文本分类(如情感分析、新闻分类等)、机器翻译、文本生成(如自动写诗、故事生成等)进行实践操作,综合运用前面所学的分词、词向量、循环神经网络、注意力机制等知识,使用深度学习框架构建完整的模型,从数据准备(收集、清洗、标注等)、模型构建、训练到评估的全过程进行实践,通过对比不同模型结构、参数设置等在相同任务上的表现,不断优化模型性能,同时积累实际项目经验,了解自然语言处理任务在实际应用中的难点和挑战。
    • 学习资源:斯坦福大学的 “Natural Language Processing with Deep Learning” 课程对自然语言处理中的深度学习应用有非常深入的讲解,课程中有很多前沿的研究成果分享以及编程实践作业;《基于深度学习的自然语言处理》这本书结合了大量的实际案例和代码示例,详细介绍了如何利用深度学习解决各种自然语言处理任务,是很好的参考资料。
(二)计算机视觉(约 2-3 个月)
  • 图像处理基础(约 1-2 个月)
    • 图像基本概念与表示(约 2 周)
      • 图像的数字化与像素(约 1 周):学习图像是如何从现实世界中的物体通过光学设备(如相机)转化为计算机能够处理的数字图像的过程,理解像素的概念,即图像的最小单元,掌握图像的分辨率、颜色模式(如 RGB、灰度模式等)等基本概念,通过查看不同分辨率、不同颜色模式的图像文件,观察其在计算机中的显示效果,理解这些概念对图像质量和处理方式的影响。
      • 图像的读取与存储(约 1 周):掌握在 Python 中使用 OpenCV 库或其他图像处理库(如 Pillow 库)读取不同格式(如 JPEG、PNG 等)图像文件的方法,了解图像数据在内存中的存储结构(如二维或三维数组表示不同颜色通道的像素值),学会将处理后的图像保存为指定格式的文件,通过实际操作读取、显示和保存各种图像文件,熟悉图像的基本操作流程。
    • 图像变换与滤波(约 2 周)
      • 灰度变换(约 1 周):学习常见的灰度变换方法,如线性变换(调整图像的亮度、对比度等)、非线性变换(如对数变换、幂次变换等用于增强图像特定区域的对比度等)的原理和实现方式,通过对实际的灰度图像或彩色图像转换为灰度图像后进行不同的灰度变换操作,观察图像在亮度、对比度等方面的变化效果,理解不同灰度变换方法的适用场景。
      • 滤波与卷积(约 1 周):深入理解滤波的概念,即通过对图像像素进行加权平均等操作来去除噪声、增强图像边缘等,掌握常见的滤波方法(如均值滤波、中值滤波、高斯滤波等)的原理和实现方式,了解卷积运算在图像处理中的核心作用(滤波操作本质上就是一种卷积运算),通过对含有噪声的图像进行不同滤波方法的处理,对比处理前后图像的质量变化(如噪声去除效果、边缘清晰度等),体会不同滤波方法的优缺点。
    • 边缘检测与特征提取(约 2 周)
      • 特征提取(约 1 周):掌握传统的手工特征提取方法,如尺度不变特征变换(SIFT)、加速稳健特征(SURF)、方向梯度直方图(HOG)等的原理和应用场景。了解这些特征是如何从图像中提取具有代表性、对图像变换(如旋转、缩放、平移等)相对不变的信息,用于后续的图像匹配、目标识别等任务。通过实际的图像数据库(如 Caltech 101、Caltech 256 等)进行特征提取操作,可视化提取出的特征向量,体会不同特征在描述图像内容方面的特点,比如 HOG 特征常用于行人检测等任务,能有效捕捉图像中物体的轮廓形状信息。
      • 边缘检测(约 1 周):学习边缘检测的重要性以及常见的边缘检测算法,如基于一阶导数的 Sobel 算子、Prewitt 算子,基于二阶导数的 Laplacian 算子、Canny 算子等的原理和实现方式。理解这些算子是如何通过计算图像像素灰度值的变化来确定边缘位置的,通过对不同类型的图像(如简单几何图形图像、自然场景图像等)应用各种边缘检测算法,观察并对比它们检测出的边缘效果,分析不同算法在抗噪能力、边缘定位准确性等方面的优劣,例如 Canny 算子通常具有较好的检测精度和对噪声的鲁棒性,能同时检测出强边缘和弱边缘并进行合理的边缘连接。
      • 学习资源:《数字图像处理》(冈萨雷斯著)这本书是图像处理领域的经典教材,涵盖了从图像基础概念到各类图像处理技术的详细讲解,配合书中的大量示例图像能帮助你很好地理解相关知识;OpenCV 官方文档提供了全面且详细的关于使用 OpenCV 库进行图像处理操作的介绍,包括各种函数的参数说明和代码示例,便于你快速上手实践。
    • 深度学习应用(约 1 - 2 个月)

      • 卷积神经网络(CNN)原理(约 2 周)
        • 卷积层(约 1 周):深入理解卷积神经网络中卷积层的核心概念,包括卷积核(滤波器)的定义、作用以及如何通过卷积核在图像上滑动进行卷积操作来提取图像特征。掌握卷积核的参数(如大小、步长、填充方式等)对卷积结果的影响,理解卷积操作如何实现局部连接和权值共享,有效减少网络参数数量并降低计算复杂度,同时又能捕捉图像的局部特征。通过手动模拟卷积操作过程(例如使用简单的二维数组代表图像和卷积核进行计算)以及使用 Python 结合深度学习框架(如 TensorFlow 或 PyTorch)对实际图像进行卷积操作的实践,观察不同参数设置下卷积后的图像特征变化情况。
        • 池化层(约 1 周):学习池化层(如最大池化、平均池化等)的原理和作用,理解它是如何在保留图像重要特征的基础上进一步减少数据量,降低后续层的计算负担,同时提高模型的抗噪能力和对图像变形的鲁棒性。掌握池化操作的参数(如池化窗口大小、步长等)对特征图尺寸和特征保留效果的影响,通过对比有无池化层以及不同池化方式在相同卷积神经网络结构下对图像分类等任务的影响,体会池化层的重要性。
      • 经典 CNN 架构及应用(约 2 周)
        • LeNet、AlexNet 等早期架构(约 1 周):了解早期具有代表性的卷积神经网络架构,如 LeNet - 5(常用于手写数字识别等简单任务)、AlexNet(在 ImageNet 图像分类竞赛中取得重大突破,推动了深度学习在计算机视觉领域的广泛应用)的网络结构特点、创新点以及它们在图像分类等任务上的历史贡献。学习如何使用深度学习框架复现这些经典架构,并在相应的标准数据集(如 MNIST 数据集对应 LeNet - 5、ILSVRC 2012 数据集对应 AlexNet)上进行训练和评估,对比它们的性能表现和局限性,分析随着网络架构发展改进的方向。
        • VGG、ResNet 等现代架构(约 1 周):深入研究现代更先进的卷积神经网络架构,如 VGG(以其简洁的网络结构和通过堆叠多个小卷积核来增加网络深度的特点而闻名)、ResNet(引入残差连接有效解决了深层网络训练时的梯度消失问题,使得网络能够训练得更深,性能更优)等的原理、结构细节以及在各种计算机视觉任务(如图像分类、目标检测、图像分割等)中的卓越表现。通过使用这些架构在大型图像数据集(如 CIFAR - 10、CIFAR - 100 等)上进行实践,尝试调整不同的参数(如网络层数、每层的通道数等),观察对模型性能的影响,体会它们在实际应用中的优势和适用场景。
      • 目标检测、图像分割等应用(约 2 周)
        • 目标检测(约 1 周):学习目标检测的任务定义,即识别图像中不同类别的目标物体并确定它们的位置(通常用边界框表示)。掌握常见的目标检测算法框架,如基于区域的卷积神经网络(R - CNN)系列(包括 R - CNN、Fast R - CNN、Faster R - CNN 等,逐步改进检测速度和精度)、YOLO(You Only Look Once,以其快速的实时检测性能著称)、SSD(Single Shot MultiBox Detector,兼顾检测速度和精度)等的原理、结构特点以及它们在不同场景下的应用优势。通过使用开源的目标检测代码库(如基于 PyTorch 的 Detectron2、基于 TensorFlow 的 Object Detection API 等)在公开的目标检测数据集(如 PASCAL VOC 数据集、COCO 数据集等)上进行模型训练和测试,对比不同算法在检测准确率、召回率以及检测速度等指标上的表现,了解目标检测在实际应用中的难点和挑战,如小目标检测、遮挡问题等。
        • 图像分割(约 1 周):理解图像分割的任务,即将图像划分为不同的区域,每个区域对应一个语义类别(语义分割)或者每个区域对应图像中的一个物体(实例分割)。学习常见的图像分割算法,如基于全卷积神经网络(FCN)的方法(开创了端到端的语义分割先河,将传统的卷积神经网络的全连接层替换为卷积层,实现对图像像素级别的分类)、U - Net(在医学图像分割等领域应用广泛,具有编码 - 解码结构,能较好地保留图像细节信息)、Mask R - CNN(在 Faster R - CNN 基础上增加了用于图像分割的分支,实现了实例分割功能)等的原理、结构特点以及在不同类型图像(如自然场景图像、医学图像等)分割任务中的应用。通过在相应的图像分割数据集(如 Cityscapes 数据集用于城市街景图像分割、CamVid 数据集用于视频图像分割等)上进行实践,对比不同算法在分割精度、分割效率等方面的表现,体会图像分割在实际应用中的重要性和技术难度。
      • 学习资源:《计算机视觉:算法与应用》这本书全面系统地介绍了计算机视觉领域的各种算法和应用场景,涵盖了从传统图像处理到现代深度学习方法的内容,是深入学习计算机视觉的优质参考资料;Fast.ai 网站上的 “Practical Deep Learning for Coders” 课程中有很多关于计算机视觉应用实践的内容,通过实际案例和代码讲解,能帮助你快速上手并深入理解相关技术;同时,各大深度学习框架(TensorFlow、PyTorch 等)的官方文档也提供了丰富的关于计算机视觉相关模型构建和应用的示例与教程,方便你进行实践操作。
    • 四、实践与项目阶段(预计 6 - 12 个月)

      (一)参与开源项目(长期进行)
    • 选择合适的开源项目:在 GitHub 等开源平台上,根据自己感兴趣的人工智能领域方向(如自然语言处理、计算机视觉、机器学习等)以及自身目前的技能水平,筛选合适的开源项目。可以从一些星标数量较多、文档相对完善、活跃度较高的项目入手,例如在自然语言处理领域,有 NLP - Chinese - Corpus 这样的中文语料库项目,或者在计算机视觉领域的 OpenCV 相关的拓展项目等。查看项目的 README 文件,了解项目的目标、功能、技术栈以及参与方式等基本信息。
    • 熟悉项目代码结构和开发流程:下载项目代码到本地后,通过阅读项目的代码文件、注释以及文档,梳理项目的整体架构,包括各个模块的功能、模块之间的调用关系等。例如,在一个深度学习项目中,了解数据加载模块如何读取和预处理数据、模型构建模块如何定义网络结构、训练模块的参数设置和训练流程以及评估模块如何计算模型性能指标等。同时,关注项目的开发流程,如代码提交规范、分支管理方式、问题反馈和解决机制等,这有助于你顺利融入项目团队并按照规范进行开发工作。
    • 参与代码贡献:从简单的任务开始,如修复代码中的小 bug(通过阅读报错信息、调试代码来定位问题所在,然后修改相应的代码片段)、完善项目文档(补充函数注释、更新 README 文件中的使用说明等)。随着对项目的熟悉程度增加,可以尝试参与更复杂的功能开发,如为项目添加新的模型结构、优化现有的算法实现等。在参与过程中,积极与项目的其他开发者进行沟通交流,通过提交 Pull Request、参与项目讨论组等方式,接受他人的建议和反馈,不断提升自己的代码质量和开发能力,同时也能学习到其他优秀开发者的经验和思路。
    • (二)参加竞赛(可多次参加,每次 2 - 3 个月)
    • 选择合适的竞赛:关注 Kaggle、天池等知名的数据科学竞赛平台,根据自己的知识储备和兴趣选择合适的竞赛项目。竞赛项目通常涵盖了各种人工智能相关的主题,如图像识别、文本分类、预测分析等。可以从新手入门类的竞赛开始,这类竞赛一般数据集相对较小、任务难度较低,便于你熟悉竞赛流程和积累经验,例如 Kaggle 上的 Titanic 生存预测竞赛(一个经典的机器学习入门竞赛项目,通过乘客的各种特征预测其是否在泰坦尼克号沉没事件中幸存);随着能力的提升,再选择更具挑战性的竞赛,如涉及复杂的深度学习应用和大规模数据集的竞赛项目。
    • 组队与准备工作:如果竞赛允许组队,可以寻找志同道合、技能互补的队友组成团队,例如可以有擅长数据分析、模型构建、数据可视化等不同方面的成员。在竞赛开始前,仔细阅读竞赛规则、了解评估指标(如准确率、AUC 值、均方误差等,不同竞赛任务对应的评估指标不同,这决定了模型优化的方向)以及数据格式和内容等信息。下载并分析竞赛提供的数据集,进行初步的数据探索性分析(EDA),如查看数据的分布情况、缺失值情况、特征之间的相关性等,为后续的模型构建和优化打下基础。
    • 模型构建与优化:根据竞赛任务的类型(分类、回归、聚类等),选择合适的机器学习或深度学习方法构建初始模型。例如,对于图像分类竞赛,可能会选择卷积神经网络架构(如 ResNet、VGG 等);对于文本分类竞赛,可能会运用循环神经网络结合注意力机制等方法。在模型训练过程中,通过调整模型的参数(如神经网络的层数、学习率、批量大小等)、采用不同的优化算法、进行数据增强(针对图像数据,如旋转、翻转、裁剪等操作来增加数据量和多样性;针对文本数据,如同义词替换、句子打乱等方式)等手段不断优化模型性能,同时密切关注竞赛排行榜上其他团队的成绩,分析差距并借鉴优秀团队的方法和思路,持续改进自己的模型。
    • 结果提交与总结:按照竞赛要求的格式和时间节点提交模型预测结果,等待竞赛官方的评估和反馈。无论竞赛结果如何,都要对整个竞赛过程进行总结复盘,分析自己在模型选择、数据处理、团队协作等方面存在的优点和不足,积累经验教训,以便在后续的竞赛或实际项目中能够表现得更好。
    • (三)自主项目实践(长期进行,可分阶段完成多个项目)
    • 项目选题:从简单的、自己熟悉领域相关的人工智能应用项目开始选题,例如,如果你之前有 Java 开发中涉及数据库相关的经验,可以考虑做一个基于机器学习的数据库性能预测项目,通过收集数据库的各种运行指标(如查询执行时间、内存占用、磁盘 I/O 等)作为特征,构建模型来预测数据库在未来某个时间段的性能情况;或者基于计算机视觉做一个简单的图像分类项目,比如识别宠物猫狗的照片分类等。随着能力的提升,再选择更复杂、跨领域的项目,如结合自然语言处理和计算机视觉做一个图像内容描述生成的项目(根据输入的图像,输出一段描述图像内容的文字)等。
    • 项目规划与数据收集:确定项目选题后,制定详细的项目计划,包括项目的各个阶段(如需求分析、数据收集与预处理、模型构建、训练与评估、部署应用等)的时间安排、预期目标以及关键里程碑等。对于数据收集,如果是公开数据集能满足需求的项目,可以从 Kaggle、UCI 机器学习库等知名的数据平台上获取相关数据集;如果需要自己收集数据,要明确数据来源(如通过网络爬虫收集网页文本数据、使用摄像头采集图像数据等)以及数据收集的标准和规范,确保收集到的数据质量和合法性。
    • 项目实施与优化:按照项目计划逐步推进项目实施,在数据收集完成后,进行数据预处理(如数据清洗、归一化、特征工程等操作),然后根据项目的任务类型选择合适的模型进行构建、训练和评估。在这个过程中,不断对模型进行优化,如尝试不同的算法组合、调整模型参数、改进数据处理方式等,同时要对项目的关键指标(如准确率、召回率、均方误差等,根据项目任务确定)进行监控和记录,以便直观地看到项目的进展和模型性能的变化情况。
    • 项目部署与展示:当模型性能达到预期目标后,考虑将项目进行部署应用,使其能够真正发挥作用。对于一些简单的项目,可以将模型部署在本地服务器或者个人电脑上,通过编写简单的接口程序(如使用 Flask 等 Python web 框架创建 API 接口),让其他应用能够方便地调用模型进行预测;对于更复杂的项目,可能需要考虑部署到云端服务器(如使用阿里云、腾讯云等云服务平台),并进行相应的安全防护、性能优化等工作。最后,将整个项目的成果以报告、演示文稿等形式进行整理展示,可以分享给同行、同事或者发布在个人技术博客上,一方面展示自己的学习成果,另一方面也能接受他人的建议和反馈,进一步提升自己的能力。

相关文章:

人工智能学习路线全链路解析

一、基础准备阶段(预计 2-3 个月) (一)数学知识巩固与深化 线性代数(约 1 个月): 矩阵基础:回顾矩阵的定义、表示方法、矩阵的基本运算(加法、减法、乘法)&…...

图像处理 | 图像二值化

在图像处理领域,图像二值化是一个重要的操作,它将彩色或灰度图像转换为只有两种颜色(通常是黑白)的图像。二值化广泛应用于文字识别、图像分割、边缘检测等领域,尤其在处理简洁和高对比度的图像时非常有效。本文将深入…...

ASP.NET Core 中服务生命周期详解:Scoped、Transient 和 Singleton 的业务场景分析

前言 在 ASP.NET Core 中,服务的生命周期直接影响应用的性能和行为。通过依赖注入容器 (Dependency Injection, DI),我们可以为服务定义其生命周期:Scoped、Transient 和 Singleton。本文将详细阐述这些生命周期的区别及其在实际业务中的应用…...

鼠标自动移动防止锁屏的办公神器 —— 定时执行专家

目录 ◆ 如何设置 ◇ 方法1:使用【执行Nircmd命令】任务 ◇ 方法2:使用【模拟键盘输入】任务 ◆ 定时执行专家介绍 ◆ 定时执行专家最新版下载 ◆ 如何设置 ◇ 方法1:使用【执行Nircmd命令】任务 1、点击工具栏第一个图标【新建任务】&…...

开源库:jcon-cpp

说明 jcon-cpp 是一个用于 C 的 JSON-RPC 库,它允许开发者通过 JSON-RPC 协议进行进程间通信(IPC)。JSON-RPC 是一种轻量级的远程过程调用协议,基于 JSON 格式数据进行通信。基于MIT协议,最新代码基于Qt6实现。可通过…...

Docker入门之docker基本命令

Docker入门之docker基本命令 官方网站:https://www.docker.com/ 1. 拉取官方镜像并创建容器(以redis为例) 拉取官方镜像 docker pull redis# 如果不需要添加到自定义网络使用这个命令,如需要,直接看第二步 docker r…...

C++ Qt练习项目 QChar功能测试

个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…...

Taro+react 开发第一节创建 带有redux状态管理的项目

Taro 项目基于 node,请确保已具备较新的 node 环境(>16.20.0),推荐使用 node 版本管理工具 nvm 来管理 node,这样不仅可以很方便地切换 node 版本,而且全局安装时候也不用加 sudo 了。 1.安装 npm inf…...

【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】

Overview 本文将介绍 soc 设计中 RTL-to-Netlist 映射及 RTL 中的信号名和 Netlist 中的信号名差异, 在 SoC设计中,RTL-to-Netlist映射 是从RTL(Register Transfer Level)代码转换为Netlist的过程。这通常涉及将用硬件描述语言&…...

551 灌溉

常规解法&#xff1a; #include<bits/stdc.h> using namespace std; int n,m,k,t; const int N105; bool a[N][N],b[N][N]; int cnt; //设置滚动数组来存贮当前和下一状态的条件 //处理传播扩散问题非常有效int main() {cin>>n>>m>>t;for(int i1;i&l…...

计算机网络之---OSI七层模型

为什么会有七层模型 OSI七层模型的出现源于计算机网络技术的发展需求&#xff0c;主要解决以下几个问题&#xff1a; 标准化与互操作性 随着计算机网络的快速发展&#xff0c;不同厂商、不同技术之间的设备和系统需要能够无缝通信。而不同厂商在网络硬件、软件、协议等方面存在…...

spring task使用

Spring Task 简介 Spring Task 是 Spring 框架原生自带的任务调度框架&#xff0c;它犹如一把瑞士军刀&#xff0c;为开发者提供了丰富多样的功能&#xff0c;助力轻松创建和管理定时任务。相较于其他一些第三方任务调度框架&#xff0c;Spring Task 最大的优势在于其与 Sprin…...

ADB->查看进程并强杀进程

查看进程 adb shell ps | findstr com.example.myapplication// result u0_a275 26312 914 17185988 193260 do_freezer_trap 0 S com.example.myapplication用户USER: u0_a275 该字段表示运行此进程的用户。在 Android 中&#xff0c;应用通常以 uN_aM 的格式表…...

Qt重写webrtc的demo peerconnection

整个demo为&#xff1a; 可以选择多个编码方式&#xff1a; cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…...

comfyui精准作图之gligen

简介 在 Stable Diffusion&#xff08;SD&#xff09;中&#xff0c;GLIGEN 是一种用于增强文本到图像生成模型可控性的技术。它通过在现有的预训练扩散模型&#xff08;如 Stable Diffusion&#xff09;基础上&#xff0c;引入额外的定位输入&#xff08;如边界框、关键点或参…...

再次梳理ISP的大致流程

前言&#xff1a; 随着智能手机的普及&#xff0c;相机与我们的生活越来越紧密相关。在日常生活中&#xff0c;我们只需要轻轻按下手机上的拍照按钮&#xff0c;就能记录下美好时刻。那么问题来了&#xff1a;从我们指尖按下拍照按钮到一张色彩丰富的照片呈现在我们面前&#x…...

系统思考与因果智慧

“众生畏果&#xff0c;菩萨畏因”&#xff0c;这句话蕴藏着深厚的因果智慧&#xff0c;与系统思考不谋而合。 众生畏果&#xff0c;体现了大多数人的行为模式&#xff1a;关注的是眼前的问题与结果&#xff0c;比如失败、冲突、痛苦。正如在系统思考中&#xff0c;我们称之为…...

k8s排错集:zk集群的pod报错 Init:CrashLoopBackOff无法启动

zk三节点集群&#xff0c;zk-0无法启动 statefulset 进到该node节点上查看容器的报错日志&#xff0c;发现在初始化container的时候一个命令有问题 查看正常zk集群的pod的资源配置文件 解决办法&#xff1a; 修改资源配置文件 应该修改为 chown -R 1000:1000 /zkenv kubec…...

商品详情API接口数据解析,API接口系列(示例返回数据(JSON格式))

商品详情API接口是用于获取特定商品详细信息的编程接口。它通常返回JSON格式的数据&#xff0c;包含商品的各种属性&#xff0c;如名称、价格、描述、库存状态、图片URL等。以下是一个典型的商品详情API接口数据解析示例&#xff0c;以及如何调用和使用这些数据的基本步骤。 示…...

Qt官方下载地址

1. 最新版本 Qt官方最新版本下载地址&#xff1a;https://www.qt.io/download-qt-installer 当前最新版本Qt6.8.* 如下图&#xff1a; 2. 历史版本 如果你要下载历史版本安装工具或者源码编译方式安装&#xff0c;请转至此链接进行下载&#xff1a;https://download.qt.i…...

Python自学 - 类进阶(可调用对象)

返回目录 1 Python自学 - 类进阶(可调用对象) 可调用对象在Python中有很重要的作用&#xff0c;那什么是可调用对象呢&#xff1f; 可以简单的理解为&#xff0c;凡是对象可以加括号给参数的都叫可调用对象&#xff0c;如&#xff1a;obj(x)中obj就是可调用对象&#xff0c;因…...

键盘过滤驱动

文章目录 概述注意源码参考资料 概述 irp请求会从io管理器中传递到设备栈中依次向下发送&#xff0c;当到达底层真实设备处理完成后&#xff0c;会依次返回&#xff0c;这时如果在设备栈中有我们自己注册的设备&#xff0c;就可以起到一个过滤的功能。键盘过滤驱动就是如此&am…...

Type-C单口便携显示器-LDR6021

Type-C单口便携显示器是一种新兴的显示设备&#xff0c;它凭借其便携性、高性能和广泛的应用场景等优势&#xff0c;正在成为市场的新宠。以下是Type-C单口便携显示器的具体运用方式&#xff1a; 一、连接与传输 1. **设备连接**&#xff1a;Type-C单口便携显示器通过Type-C接…...

ClickHouse vs StarRocks 选型对比

一、面向列存的 DBMS 新的选择 Hadoop 从诞生已经十三年了&#xff0c;Hadoop 的供应商争先恐后的为 Hadoop 贡献各种开源插件&#xff0c;发明各种的解决方案技术栈&#xff0c;一方面确实帮助很多用户解决了问题&#xff0c;但另一方面因为繁杂的技术栈与高昂的维护成本&…...

服务器数据恢复—raid5故障导致上层ORACLE无法启动的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台服务器上的8块硬盘组建了一组raid5磁盘阵列。上层安装windows server操作系统&#xff0c;部署了oracle数据库。 raid5阵列中有2块硬盘的硬盘指示灯显示异常报警。服务器操作系统无法启动&#xff0c;ORACLE数据库也无法启动。 服…...

鼠标过滤驱动

文章目录 概述代码参考资料 概述 其编写过程大体与键盘过滤驱动相似&#xff0c;只需要切换一下附加的目标设备以及创建的设备类型等。但在该操作后依然无法捕获到Vmware创建的win7操作系统的鼠标irp信息&#xff0c;于是通过在获取鼠标驱动&#xff0c;遍历其所有的设备进而附…...

SQL进阶实战技巧:LeetCode2201. 统计可以提取的工件?

目录 0 题目描述 1 数据准备 2 问题分析 第一步:生成每个工件的所有单元格 第二步:标记被挖掘的单元格...

Supermaven 加入 Cursor:AI 编码新篇章

引言 2024 年 11 月 11 日&#xff0c;我们迎来了一个激动人心的时刻——Supermaven 正式加入 Cursor&#xff01; 这一合作标志着 AI 编程工具进入了一个新的发展阶段&#xff0c;为开发者提供更智能、更高效的编码体验。本文将带您了解此次合并的背景、意义以及未来的发展方…...

金融项目实战 01|功能测试分析与设计

前置内容&#xff1a;金融项目准备的内容笔记可直接看如下笔记 只看&#xff1a;一、投资专业术语 和 二、项目简介 两部分文章浏览阅读2.3k次&#xff0c;点赞70次&#xff0c;收藏67次。安享智慧理财金融系统测试项目&#xff0c;测试用例&#xff0c;接口测试&#xff0c;金…...

阿里云直播互动Web

官方文档&#xff1a;互动消息Web端集成方法_视频直播(LIVE)-阿里云帮助中心 以下是代码实现&#xff1a; <!-- 引入阿里云互动文件 --> <script src"https://g.alicdn.com/code/lib/jquery/3.7.1/jquery.min.js"></script> <script src&quo…...

python【输入和输出】

Python 有三种输出值的方式&#xff1a; 表达式语句print() 函数使用文件对象的 write() 方法&#xff0c;标准输出文件可以用 sys.stdout 引用。 ① 将输出的值转成字符串&#xff0c;可以使用 repr() 或 str() 函数来实现&#xff1a; str()&#xff1a; 函数返回一个用户易…...

网络安全建设方案,信息安全风险评估报告,信息安全检测文档(Word原件完整版)

一、概述 1.1工作方法 1.2评估依据 1.3评估范围 1.4评估方法 1.5基本信息 二、资产分析 2.1 信息资产识别概述 2.2 信息资产识别 三、评估说明 3.1无线网络安全检查项目评估 3.2无线网络与系统安全评估 3.3 ip管理与补丁管理 3.4防火墙 四、威胁细…...

nexus搭建maven私服

说到maven私服每个公司都有&#xff0c;比如我上一篇文章介绍的自定义日志starter&#xff0c;就可以上传到maven私服供大家使用&#xff0c;每次更新只需deploy一下就行&#xff0c;以下就是本人搭建私服的步骤 使用docker安装nexus #拉取镜像 docker pull sonatype/nexus3:…...

Redis为 List/Set/Hash 的元素设置单独的过期时间

一.业务简介 我们知道&#xff0c;Redis 里面暂时没有接口给 List、Set 或者 Hash 的 field 单独设置过期时间&#xff0c;只能给整个列表、集合或者 Hash 设置过期时间。 这样&#xff0c;当 List/Set/Hash 过期时&#xff0c;里面的所有 field 元素就全部过期了。但这样并不…...

高比例压缩:Linux 中的压缩命令与技巧

文章目录 高比例压缩&#xff1a;Linux 中的压缩命令与技巧1. 压缩格式的选择2. gzip 命令示例&#xff1a;压缩文件示例&#xff1a;解压文件 3. bzip2 命令示例&#xff1a;压缩文件示例&#xff1a;解压文件 4. xz 命令示例&#xff1a;压缩文件示例&#xff1a;解压文件 5.…...

73.矩阵置零 python

矩阵置零 题目题目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a; 题解思路分析Python 实现代码代码解释提交结果 题目 题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例…...

工业互联网项目开发工作流及各阶段核心关注点

工业互联网项目开发全流程V3.0 工业互联网项目开发工作流程及核心问题 一、需求分析 1、共享平台需求分析 这个平台要解决什么问题&#xff1f; 这个平台的用户群体是谁&#xff1f; 这个平台应该具备哪些主要功能&#xff1f; 这个平台的使用场景是什么&#xff1f; 这个平…...

简单易用的PDF工具箱

软件介绍 PDF24 Creator是一款简单易用的PDF工具箱&#xff0c;而且完全免费&#xff0c;没有任何功能限制。既可以访问官网在线使用各种PDF工具&#xff0c;也可以下载软件离线使用各种PDF工具。 软件功能 1、PDF转换 支持将多种文件格式&#xff08;Word、PowerPoint、Exc…...

氧化铌在光学领域的独特贡献与应用拓展-京煌科技

在当今科技日新月异、各领域不断寻求突破创新的时代背景下&#xff0c;众多材料因其独特的性能而备受关注&#xff0c;氧化铌便是其中极具代表性的一种。作为铌的氧化物&#xff0c;其化学式为 Nb₂O₅&#xff0c;以无色或白色固体的形态存在&#xff0c;正凭借着优良的热稳定…...

EXCEL技巧

1. EXCEL技巧 1.1. 截取表格内某个字符之前的所有字符 1.1.1.样例 在单元格内输入函数&#xff1a; # 截取A1单元格内“分”字符左边的所有字符 LEFT(A1,FIND("分",A1)-1)1.1.2.截图...

Java 将RTF文档转换为Word、PDF、HTML、图片

RTF文档因其跨平台兼容性而广泛使用&#xff0c;但有时在不同的应用场景可能需要特定的文档格式。例如&#xff0c;Word文档适合编辑和协作&#xff0c;PDF文档适合打印和分发&#xff0c;HTML文档适合在线展示&#xff0c;图片格式则适合社交媒体分享。因此我们可能会需要将RT…...

shell的变量

在程序设计语言中&#xff0c;变量是一个非常重要的概念。也是初学者在进行Shell程序设计之前必须掌 握的一个非常基础的概念。只有理解变量的使用方法&#xff0c;才能设计出良好的程序。本节将介绍Shell中变量 的相关知识。 1、什么是变量 顾名思义&#xff0c;变量就是程序…...

【STM32】利用SysTick定时器定时1s

1.SysTick简单介绍 SysTick定时器是一个24位的倒计数定时器&#xff0c;当计数到0时&#xff0c;将从RELOAD寄存器中自动重装载定时初值&#xff0c;开始新一轮计数。 SysTick定时器用于在每隔一定的时间产生一个中断&#xff0c;即使在系统睡眠模式下也能工作。 关于SysTic…...

halcon3d 如何计算平面法向量!确实很简单

这个问题其实一直困扰了我很长时间,之前是怎么算的呢 对于一个平面,我会先求它的fit_primitives_object_model_3d去将它拟合,接下来用surface_normals_object_model_3d 算子生成它的法线,后用get_object_model_3d_params (ObjectModel3DNormals, ‘point_normal_x’, GenP…...

计算机网络_物理层

2.1物理层的基本概念 传输媒体 导引型传输媒体 双绞线 ​ 同轴电缆 ​ 光纤 非导引型传输媒体 微波通信 ​ 2~40GHz 物理层协议的主要任务 机械特性 ​ 电器特性 ​ 功能特性 ​ 过程特性 物理层概述 物理层考虑是怎样才能在连接各种计算机的传输媒体上传输数据比特流…...

Springboot——钉钉(站内)实现登录第三方应用

文章目录 前言准备1、创建钉钉应用&#xff0c;并开放网页应用2、配置网页应用各项参数发布版本 前端改造后端逻辑1、获取应用免登录 Access_token2、通过免登录 Access_token 和 Auth_Code 获取对应登录人信息 注意事项 前言 PC端的钉钉中工作台&#xff0c;增加第三方应用&a…...

libusb学习——简单介绍

文章目录 libusb 简介libusb 编译libusb 源码目录介绍核心代码文件平台支持例子 API使用libusb初始化和去初始化libusb设备处理和枚举libusb 杂项libusb USB描述符libusb 设备热插拔事件通知libusb 异步设备I/Olibusb 同步设备I/Olibusb 轮询与定时 libusb 涉及技术参考 libusb…...

Vue进阶(贰幺叁)node 版本切换

文章目录 一、前言1.1 什么是nvm? 二、查看已安装好的 node 版本三、下载 node 版本四、切换 node 版本五、查看在用 node 版本六、拓展阅读 一、前言 项目开发阶段&#xff0c;会涉及多node版本切换应用场景&#xff0c;可应用nvm实现node版本切换。 1.1 什么是nvm? nvm是…...

[AI] 大模型提示词:理解与高效使用指南

随着大模型&#xff08;如GPT、Claude、PaLM等&#xff09;在各领域的应用逐步普及&#xff0c;**提示词&#xff08;Prompt&#xff09;**的重要性愈发凸显。提示词作为与大模型交互的主要方式&#xff0c;不仅直接影响生成结果的质量&#xff0c;还决定了模型在特定任务中的适…...

关于linux网桥(Linux Bridge)的一些个人记录

文章目录 1. Linux Bridge简述2. 网桥创建创建配置持久化在Debian/Ubuntu系统上&#xff1a;在CentOS/RHEL系统上&#xff1a; 启用和验证 3. 关于linux网桥不转发ip帧的问题原因解决配置持久化 4. 查看网桥学习交换表手动添加或删除条目添加条目删除条目 配置静态条目设置条目…...