Python
未读 常用命令:
查看版本号:
conda --version
创建新环境
conda create -n 环境名称 python=python版本号
切换环境:
activate 环境名
下载包
conda install 包名
升级包
conda update 包名
删除包
conda remove 包名
删除环境:
conda remove -n 包名 --all(删除该环境下的所有包名)
查看所有虚拟环境:
conda env list
基于经典网络架构训练图像分类模型
改模型分为三块
数据预处理部分:
数据增强:torchvision中transforms模块自带功能,比较实用
数据预处理:torchvision中transforms也帮我们实现好了,直接调用即可
DataLoader模块直接读取batch数据
网络模块设置:
加载预训练模型,torchvision中有很多经典网络架构,调用起来十分方便,并且可以用人家训练好的权重参数来继续训练,也就是所谓的迁移学习
需要注意的是别人训练好的任务跟咱们的可不是完全一样,需要把最后的head层改一改,一般也就是最后的全连接层,改成咱们自己的任务
训练时可以全部重头训练,也可以只训练最后咱们任务的层,因为前几层都是做特征提取的,本质任务目标是一致的
网络模型保存与测试
模型保存的时候可以带有选择性,例如在验证集中如果当前效果好则保存
读取模型进行实际测试
先看一下我们数据的保存格式:
train文件夹中的:
valid文件夹中的:
数据预处理部分
导入模块
123456789101112131415161718192021# 处理 ...
手写体识别
这个手写体识别我是用的是Pytorch库,有两种实现方法,第一种是:简单的神经网络,第二种是:卷积神经网络
简单神经网络的实现
加载库
12345678910# 加载必要的库import torch# nn模块,有一些模型import torch.nn as nn# nn中的functional模块,里面包含损失函数等import torch.nn.functional as F# 优化器import torch.optim as optim# 数据处理from torchvision import datasets, transforms
定义超参数
123456# 定义超参数# 参数:模型f(x, θ)中的θ称作模型的参数,可以通过优化算法进行学习# 超参数:用来定义模型结构或优化策略BATCH_SIZE = 16 # 每批处理的数据DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu")# 用来决定是用cpu计算还是GPU计算EPOCHS ...
CNN卷积神经网络
卷积神经网络与传统网络的区别:
一个是三维的,一个是二维的
整体架构
卷积的计算方法:
先把图像分为一个个不同的小区域,然后在通过权重矩阵,算出每一个小区域的值
计算方法: 特征矩阵 * 权重矩阵
卷积一般需要做三次以上:
堆叠的卷积层:
卷积的参数
步长
卷积核尺寸
卷积核尺寸越小,我们所得到的特征越明显,卷积核尺寸越大,我们得到特征越模糊,一般最小卷积核的尺寸就是3 * 3的
边缘填充
我们在计算卷积的时候,越到边缘的地方,它的影响越小,如果想要改变这个现状,我们需要进行边缘填充
从这个步长为2的卷积中,我们可以看出,边缘的数据,只进行了一次乘法,而中间的数据进行了两次乘法,这时候边缘和中间的数据,对最后的影响就会不同,我们可以通过边缘填充来消除这个影响
由图中可以看出灰色的为边缘填充的部分,紫色的为我们的目标地址,
卷积计算公式
卷积参数共享,一般一个卷积核使用同一套参数即可,不用每一个区域我们都要改变参数
池化层
当我们采集的特征过多的时候,这时候我们可以使用池化层来进行特征压缩:
框选每一个区域,得到其中特征最明显 ...
气温预测
通过前天,昨天,和历史上这一天的最高温度,和今天实际的最高温低来进行回归模型的建立
先导包
12345678import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport torchimport torch.optim as optimimport warningswarnings.filterwarnings("ignore")%matplotlib inline
读取一下数据
1234features = pd.read_csv("data/temps.csv")# 展示一下数据features.head()
year
month
day
week
temp_2
temp_1
average
actual
friend
0
2016
1
...
PyTorch
使用神经网络最重要的一件事情就是:他可以帮我们把反向传播全部计算好
Tenser 常见的格式:
scalar
通常就是一个数值
1x = tensor(42, )
vector
例如:[-5. , 2. , 0. ],在深度学习中通常指特征,例如词向量特征,某一维度特征等
1v = tensor([1.5, -0.5, 3.0])
matrix
一般计算的都是矩阵,通常是多维的
1M = tensor([1., 2. ],[3., 4.])
n-dimensional tensor
基本使用方法
创建一个矩阵
1x = torch.empty(5,3)
12345tensor([[-2.1607e-32, 3.9797e-43, -2.1607e-32], [ 3.9797e-43, -2.1607e-32, 3.9797e-43], [-2.1607e-32, 3.9797e-43, -2.1606e-32], [ 3.9797e-43, -2.1606e-32, 3.9797e-4 ...
深度学习
基本流程:
数据的获取
特征工程 最核心
建立模型
评估与应用
特征工程的作用:
数据特征决定了模型的上限
预处理和特征提取是最核心的
算法和参数的选择,只是为了逼近这个上限
特征如何提取:
传统特征提取方法:
深度学习的目的 :能够自动的提取特征
图像分类
给定一张图片,计算机能够自动的识别该图像中的某一部分属于那个类别
图像的表示 :计算机眼中的图像是一串串数字
计算机视觉-图像分类面临的挑战:
照射角度
形状改变
部分遮蔽
背景混入
机器学习常规套路:
收集数据并给定标签
训练一个分类器
测试,评估
k临近算法:
计算已知类别数据集中的点与当前点的距离
按照距离依次排序
选取与当前点距离最小的K个点
确定前K个点所在类别的出现概率
返回前K个点出现频率最高的类别作为当前点预测分类
缺点:
被分类的对象会受背景主导,不能够聚焦到我们所关注的主体上
神经网络基础
f() 表示一个函数, W表示每个类别的权重, x 表示目标图像的所有像素点, b表示对每个类别进行微调
运算结果:
从图中可以看出,猫被分为了狗类,导致这种情况 ...
第一章(基本符号)
print
print函数能够直接输入到文件中:
123f = open("笔记.txt", "w")print("Hello World", file = f)
制表符
\n 换行
\t 一个tab键,占四个字节, 如果这四个字节中前面的占用了,则补充为四个字节, 如果没占用则新开辟四个字节的位置
\r 回车,会把在回车之前的字符全部删掉
\b 退格,删除前一个字符
元字符
让制表符不起作用----引号中有什么就输出什么
1print(r"hello\nworld") === hello\nworld
输出字符串的时候最后一个字符不能是 ‘\’, 可以是‘\’
第二章
二进制和字符编码
二进制 -->ASCII -->GB2312–>GBK–>GB18030–>Unicode
二进制 -->ASCII -->其他国家的字符编码–>Unicode几乎包含了全世界所有的字符–>UTF-8
标识符和保留字
保留字不能再命名的 ...
文档扫描OCR识别
文档扫描
引入库
1234import imutilsimport numpy as npimport argparseimport cv2
设置参数
12345# 设置参数# 这里设置的参数是控制台参数ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required=True, help="Path to the image to be scanned")args = vars(ap.parse_args())
定义函数
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788# 图像显示函数def cv_show(name, img): ...
人工智能
未读 银行卡数字识别
该程序主要是依靠模板匹配来进行数字识别的
模板图像
待匹配的银行卡
这里银行卡中的数字和我们模板中的数字是同一个类型
模板操作
首先导入我们所需要的包:
1234from imutils import contoursimport numpy as npimport argparseimport cv2
配置我们所需要的参数:
12345ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required=True, help="path to input image")ap.add_argument("-t", "--template", required=True, help="path to template OCR-A image")# 这里是让参数转换成字典args = vars(ap.parse_args())
设置绘图函数
12345# 绘图展示def ...