数学
张成空间
给定向量的加减和数乘的结果组成的空间
向量计算
积:两数相乘的结果
点乘
点积、内积、数量积、标量积
计算
|a|*|b|*sinθ
几何意义
两个向量在方向上的相似度
大于零:0~90°
等于零:90°
小于零:90~180°
叉乘
外积、向量积
计算
|a|*|b|*cos θ
几何意义
向量组成的平行四边形面积
张量tensor
统一各个维度的数组
标量:0维张量
向量:1维张量
矩阵:2维张量
高位数组
深度学习
张量
numpy:ndarrya
在cpu上运算
读取图像获得数据,数据类型就是ndaary
pytorch:tensor
既可以在cpu上运算,也可以在gpu上运算
为深度学习准备
两者转换
numpy()
from_numpy()
ndaary和tensor共享内存,改变其中一个,另一个也会改变
python
with ~ as ~
资源管理
通常用于文件的打开、网络的建立等
with open(文件)as f
with的代码块执行后,自动关闭文件
**kwargs
当不确定函数参数时,使用 **kwargs接受以键值对方式传入的不定参数,kwargs相当于字典
定义
def myfunc(** kwargs)
调用
myfunc(“kw1” = 11, “kw2” = 22)
遍历参数
for kew, value in kwargs.items()
~~
字典 iterms()
获取字典所有的键值对
字典和**
将字典解包为多个键值对
可以将解包后的键值对,当作参数传递给函数
lambda匿名函数
lambda arguments : expression
arguments:匿名函数接受的参数
expression:匿名函数执行的语句
lambda:storage, loc :strorage
接受两个参数storage和loc,返回storage
format格式化
num = 3.1415926
formatted_str = ‘{:.4f}’.format(num)
print(formatted_str)
“:”代表开始格式化
字符串拼接join()
separator.join(iterable)
将可迭代对象iterable中元素,连接成一个字符串。
每个元素间的分隔符是separator
‘’.join(log)
将可迭代对象log中元素,无间隔地连接成一个字符串
matplotlib:agg
import matplotlib
matplotlib.use(‘Agg’)
AGG后端:非交互式,后端渲染
生成的图像,不会显示在屏幕上,而是保存在文件中
常用于服务器,或是没有GUI的系统
渲染:将场景描述,转化为图像的过程
map(function, iterable)
遍历可迭代对象iterable中元素,使用function函数处理元素
返回一个新的可迭代对象,元素为function的返回值
for循环遍历的另一种实现方式
def square(x):
return x ** 2
lst = [1, 2, 3]
result = map(square, lst)
print(list(result)) # 输出 [1, 4, 9]
pytotch
dataset
抽象类
针对具体的数据集特点,建立对应的数据集类
必须实现函数
init 函数中实现对数据的预处理操作
getitem(self, index):返回该数据集中第 index 个样本。该函数的返回值可以是一张图片,或者是一个字典(包含图像、标签等信息)。
len(self):返回数据集中样本的总数。
示例
from torch.utils.data import Dataset
class MyDataset(Dataset):
def __init__(self, data, labels, transform=None):
self.data = data
self.labels = labels
self.transform = transform
def __getitem__(self, index):
x = self.data[index]
y = self.labels[index]
if self.transform:
x = self.transform(x)
return x, y
def __len__(self):
return len(self.data)
dataloader
使用程序类
在dataset上迭代,批量化数据,打乱数据,并行加载数据
module:forward
模型的核心函数
模型的正向传播
loss:scheduler与step
scheduler学习率调度对象
损失函数的scheduler对象,可以根据一定条件,调整优化器的学习率
例如,在训练早期,调大学习率,加速收敛;在训练后期,调小学习率,防止过拟合
scheduler.step()
调整优化器的学习的方法
nn.DataParallel
用于数据并行的模型容器
将模型复制到指定设备上(gpu),每个设备运行一部分张量计算,最后整合计算结果,以此达到加速计算的目的
模型保存与加载
保存模型
torch.save(model, ‘model.pt’)
加载模型
model = torch.load(‘model.pt’)
保存模型参数
torch.save(model.state_dict(), ‘model_params.pt’)
加载模型
model = Model()
state_dict = torch.load(‘model_params.pt’)
model.load_state_dict(state_dict)