【pytorch11】高阶操作

高阶操作

  • Where
  • Gather

where

三个参数,第一个是condition,第二个参数是源头A,第三个参数是源头B,也就是说有两项数据A和B,C有可能来自于A也有可能来自于B,如果全部来自于A的话直接赋值给A,如果部分来自A的话可以例如C0=A0,C1=B1,如果C0,0,1=A0,0,1,C0,0,2=B0,0,2,C0,0,3=A0,0,3说明C的来源是比较乱的,没有一个特别好的规律,把这个乱的规则写在condition表里,condition的shape与A和B是一样的


为什么需要这个操作?

没有一个很好规则来帮助你赋值,简单的复制方法是不可行的,使用Python的逻辑控制比如for,比如用双重for循环加条件语句Ci,j=Ai,j,但是存在一个问题,这段代码是运行在CPU上的就没有GPU的加速功能,因此要完成这样一个简单的分别采样或者分别取值的过程,照python代码的情况是用CPU控制的没有并行,生成一个condition,赋值语句就可以高度并行化

例如有一个场景,有一张表存储的是动物的名字dog,cat,whale,但是pytoch是没有string类型的这里只是示意,通过神经网络得到相对编号的索引比如说第一个动物得到的索引是1那就意味着是cat,第二个动物对应的索引是0那就是对应的dog,第三个动物对应的索引是1,第四个动物得到的索引是2,即1,0,1,2,表一共有3个种类,但是我们要查4次操作,所以查表的操作会生成cat,dog,cat,whale所以生成的shape和你提供要查找的shape是一样的,这个查表的操作是一个收集的操作,根据1收集索引为1的cat以此类推,因此这就是gather设计的初衷,gather(dog,cat,whale,dim=0,1,0,1,2),通过这三个参数就可以很好的生成查表的操作,pytorch矩阵运算没有这种操作可以完成这个功能,因此gather设计为了GPU的方式实现这个功能


相关推荐
西西弗Sisyphus15 小时前
PyTorch 数据加载:Dataset、DataLoader 与 WeightedRandomSampler 解决类别不平衡
pytorch·python
小白学大数据17 小时前
无库无捷径,PyTorch 手写完整 Transformer 大语言模型 LLM
开发语言·pytorch·语言模型·transformer
承渊政道18 小时前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(基于PyTorch卷积层的MNIST分类实战:从卷积直觉到高效卷积设计)
人工智能·pytorch·神经网络·分类·chatglm·卷积·大模型学习
想会飞的蒲公英2 天前
一个 PyTorch 模型训练的完整流程
人工智能·pytorch·python
梦想三三2 天前
Flask + PyTorch模型部署实战:从训练权重到API接口完整工程解析(附完整代码)
人工智能·pytorch·python·flask·模型推理·ai 工程化
白日做梦Q2 天前
PyTorch从零手写CNN实现NEU钢材表面缺陷检测(完整实战·单篇完结)
人工智能·pytorch·cnn
想会飞的蒲公英2 天前
TF-IDF + 随机森林中文文本分类全链路实战:从训练脚本到 Flask API + Streamlit 前端
人工智能·pytorch·python·随机森林·分类·flask·tf-idf
FriendshipT2 天前
Ultralytics:解读C3模块
人工智能·pytorch·python·深度学习·目标检测
FriendshipT3 天前
Ultralytics:解读PSABlock模块
人工智能·pytorch·python·深度学习·目标检测
星马梦缘4 天前
机器学习与模式识别 第十三章 从线性模型到神经网络 考点压缩
人工智能·pytorch·神经网络·机器学习·激活函数·relu