人工智能学习
学习路线图
用一张黑马的图来看看具体有些什么东西吧
术语
参数 (Parameters)
参数是模型在训练过程中通过数据学习得到的值。这些值直接影响模型的预测能力。不同类型的模型有不同的参数。例如:
线性回归中的参数是回归系数(权重)和偏置项。
神经网络中的参数是权重和偏置项。
在模型训练过程中,这些参数通过优化算法(如梯度下降)进行调整,以最小化损失函数,从而提高模型的预测精度。
超参数 (Hyperparameters)
超参数是在模型训练之前设置的值,它们不会在训练过程中通过数据学习到,而是需要通过实验或交叉验证等方法来选择。超参数控制模型的训练过程和模型的复杂度。常见的超参数包括:
学习率(learning rate):控制梯度下降算法中步长的大小。
正则化参数(regularization parameters):控制正则化项的强度,以防止过拟合。
决策树中的深度(depth of decision tree):控制树的最大深度。
神经网络中的隐藏层数(number of hidden layers)和每层的神经元数目(number of neurons per la ...
yolo8环境搭建
安装miniconda
找到地址, 下载对应版本, 我这里选择Windows 以及 python3.8
下载后安装, 记得勾选添加到环境变量, 这样就能在控制台使用conda
创建yolov8虚拟环境
1conda create -n yolov8 python=3.9
激活和退出
12conda activate yolov8 conda deactivate
安装pytorch
首先先激活使用虚拟环境
1conda activate yolov8
找到显卡版本
1nvidia-smi
安装pytorch
去官网搜索找到自己对应的版 我这里是11.0
1conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=10.2 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
安装yolov8
pip直接安装
这种安装方式无法修改源码, 不推荐
1pip install ultralytics
然后 ...
windows程序设计
基础知识
字符集
我觉得字符集这里要分为两个部分:
字符集编码: 一个字符对应一个数字值, 不同的字符集对应的编码是不一样的 比如 ascll 编码 和 Unicode 和 ansi
编码方案: 如何转换计算机里面的字节数据到编码 比如 Unicode的转换就有 UTF-8 UTF-16 UTF-32
asni编码 根据不同国家对应的编码方案是不同的, 字符集也不同
字符和宽字符
宽字符使用Unicode编码 统一两个字节 字符的话一般使用多字节编码ansi
12wchar* "c语言" // 在Unicode下面这个是8字节char* "c语言" // 在ansi 里面是6字节 c一个 \0 一个 其他都是双字节
注意区分代码编码 和 变量本身编码 这是两个不同的东西, 代码的编码取决于你的选择, 但是变量的编码一般不是你决定的, 但是你的代码编码会影响到变量里面的值
比如 你的代码文件采用的是asni 但是对于 wchar* “c语言” 文件里面它是6字节 但是内存里面它是8字节 (可以这样理解), 如果代码文件编码 ...
设计模式
设计模式
一 创建型模式
创建对象时隐藏创建逻辑,而不是直接使用new的方式创建对象,可以根据程序判定创建什么样的对象,这样会很灵活
1.工厂模式
在工厂模式中,不对外暴露对象创建的过程,用户需要什么跟工厂要就行.
优点:
不需要知道产品内部实现细节,只需要知道产品对应的接口能干嘛就行
扩展性高,增加一类产品只需要多写一个工厂类就行
缺点:
每次创建一类产品,都需要增加一个工厂类,而多增加一个产品,需要更改工厂类的代码
举例说明:
我们买车只需要直接告诉造车工厂我们需要什么车就行,不需要知道车怎么造出来的,如果我们需要买飞机,我们就需要告诉造飞机的工厂,
车:接口
奥迪:具体实现类
造车工厂:工厂类
我们知道车可以干嘛,然后我们可以根据喜欢向工厂要什么样的车.
每多一个接口,就需要多 一个工厂类,每多一个具体实现类,工厂类里面就需要多些一段代码.
何时使用: 明确知道不同条件下需要创建什么对象,如果创建对象本来就很简单,我们还是直接new比较好
2.抽象工厂模式(---------)
抽象工厂是工厂的工厂,它可以创建工厂类对象,创建的工厂又可以提供创建 ...
学习方法论
前言
长久以来,我对学习的态度可以概括为"随遇而安"——面对新知识时,总是凭直觉和当下状态决定学习策略,没有形成系统的方法论。这种即兴式学习看似灵活,实则暗藏效率陷阱:常常在学习到一半时,才想起曾经使用过的更高效方法,结果是浪费了大量时间和精力。
经过反思,我意识到:建立个人学习方法论不是可有可无的锦上添花,而是提升学习效率的必要基础
按照这个方法论加上主观能动性来学习, 定会事半功倍, 以这个方法论为主导, 加上具体问题具体分析
在不断实践中, 完善学习方法论
方法论
记录
一定要保留学习记录痕迹, 看过的书, 问过的问题, 写过的东西
能清楚的知道我们学到哪里了
后续遇到同样的问题, 很快就能找到答案
操作系统镜像还原
实模式下的中断向量 占4个字节 段基址+段偏移地址(中断处理程序地址) 中断向量表最多1024 字节, 因此最多256中断处理程序
关于电脑的一些基本硬件
前言
最近本人心血来潮想自己diy主机玩玩, 然后呢我只知道电脑需要些什么, 但是他们的型号啊, 搭配关系啊, 我是完全不知道的, 因此就记录一下
主板
主板型号通常由几个部分组成,每个部分代表不同的信息,帮助用户了解主板的规格和功能。以下是主板型号中常见的组成部分及其含义:
1. 品牌名称
代表主板的制造商或品牌,例如华硕(ASUS)、技嘉(Gigabyte)、微星(MSI)等。品牌名称通常是型号的第一个部分,用来识别主板的生产厂商。
2. 芯片组代号
芯片组是主板的核心部分之一,影响主板的性能和功能支持。常见的芯片组代号是字母和数字的组合,表示主板采用的芯片组类型。
例子:
Intel平台:Z790、B660、H510 等(Z代表高端,B和H则代表中低端)。
AMD平台:X670、B550、A320 等(X代表高端,B和A表示中低端)。
3. 平台和处理器代号
有时型号中会包含与支持的处理器类型或平台相关的信息。特别是在不同代数的CPU出现时,主板厂商会区分主板型号。例如,Intel的 LGA 1700 或 AMD 的 AM5 插槽。
例子:
Intel:LG ...
自制操作系统
启动
BIOS
basic input output system 基本输入输出系统
BIOS启动流程: 加电自检, 然后读出启动盘的第一个扇区 到 0x7c00 位置 然后调整到 0x7c00位置执行代码, 这个时候把执行权限交给我们, 我们需要将代码写入到第一个扇区, 然后将操作系统加载到内存中
此时CPU处于的模式是在实模式下 , 在这个模式下我们能够直接操作内存, 想怎么操作怎么操作, 但是只有1M的寻址空间
中断
中断处理流程
中断产生和检测:
当外部设备或其他源产生中断信号时,外部中断控制器(如PIC或APIC)负责接收这些信号。
当CPU完成当前执行的指令后,它会检查中断控制器是否标记了任何待处理的中断。
中断向量和中断服务例程(ISR)的查找:
如果中断被允许(即处理器的中断标志IF位为1),CPU会从中断控制器获取一个中断向量号。
使用这个中断向量号,CPU会查找IDT(中断描述符表),以确定相应的中断服务例程的地址。
状态保存和中断响应:
在跳转到中断服务例程之前,CPU自动保存当前的代码段寄存器(CS)和指令指针(IP)到堆栈中。 ...
vscode的使用
前言
这里主要介绍一些配置项和好用插件
外观
主题选择
文件主题
vscode-icons
Material Icon Theme
插件
运行和调试
vscode 是通过 配置launch.json 和 task.json 来 进行调试和 运行程序
python配置
123456789101112131415161718192021{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python 调试程序: 当前文件", // 当前配置名字 "type": "debugpy", // 类型 "req ...
makefile学习
前言
什么是 Makefile?
Makefile 是一个用来自动化构建项目的简单工具,通常用在编译和链接程序的过程中,但它也可以用来执行任何你想自动化的任务。Makefile 包含一系列规则和指令,它们定义了如何构建项目和执行其他相关任务。
为什么使用 Makefile?
自动化:Makefile 可以自动化许多编程任务,比如编译源代码、生成文档、或执行测试等。
依赖跟踪:make 工具可以自动检测文件之间的依赖关系,只重新构建实际需要更新的部分,而不是整个项目。
**跨平台:**虽然 make 最初是为 Unix 和类 Unix 系统开发的,但现在也可用于许多其他操作系统。
Makefile 的基本组成
目标(Target): 是你想完成的任务名称。比如:编译源代码可以是一个目标。
依赖(Dependencies): 是完成任务所需的前置条件,通常是源文件或其他目标。
命令(Commands): 是 make 执行的实际命令,它们指定了如何从源文件创建目标输出。
伪目标(Phony target): 伪目标并不代表实际的文件名,而是一个执行特定任务的标签名称。伪目标没有对应的 ...