- Numpy和Pytorch可以相互转换,前者CPU上,后者GPU上,都是对矩阵进行运算,Pytorch的基本单位是张量。
- torch 可以初始化全为0、全为1、符合正态分布的矩阵
- 确定性初始化
- torch.tensor()
- torch.arrange()
- torch.linspace()
- torch.logspace()
- ones/zeros/eye/full
- 随机性初始化
- torch.Tensor()
- torch.rand()
- torch.rand_like()
- torch.randint()
- torch.randn()
- 直接点×关闭jupyter不正确,应该再启动一个命令行,进入打开jupyter的环境,打jupyter notebook stop
- torch可以和python列表一样切片
- 神经网络输入一维,图片是三维,所以需要维度变换,view()和reshape()都可以维度变换,后者鲁棒性更强。reshape可以多层嵌套,前者不行。化成一维可以偷懒,用-1。
- 增加新的维度:unsqueeze(),增加一个括号
- 维度缩减:squeeze()维度值为1才能删,因为维度值大于1删除会丢数据,减少个括号。
- 维度扩展:expand(),repeat()
- 维度调整:transpose(),permute()前者只能调两个维度,后者可以调整多个维度。某个算法可能只能用最后一个维度,所以需要进行维度的调整,如transformer()
- 广播机制:相当于先进行了unsqueeze再进行expand。小维度向大维度进行广播时,得先匹配,得先小维度和大维度相同或者小维度为1才能进行广播。
- 根据文档进行编程的思想!不用背API,知道这个函数的功能是什么,用到的时候去查文档。
- 数学能力是科研能力的上限,如果是工作的话数学要求没那么高。
- 张量的拼接 cat()和stack(),前者只能是需要拼接的维度不同,其他得相同;后者所有维度都必须相同。
- 张量的拆分split()和chunk(),前者是按间隔拆分,后者是按数量拆分
- 取整floor(),ceil(),round()
- 裁数trunc(),frac()
- 计算mean,max,sum,prod,min
- a.argmax(),a.argmin()最大值索引和最小值索引
- eq(),equal()前者更精细,每个位置比对,后者是整体比对。