CNN系列: 做图像识别时,对象是图片,是一个二维的结构,于是人们发明了CNN这种神奇的模型来提取图片的特征。CNN的核心在于它的kernel,kernel是一个个小窗口,在图片上平移,通过卷积的方式来提取特征。这里的关键在于图片结构上的平移不变性: 一个小窗口无论移动到图片的哪一个位置,其内部的结构都是一模一样的,因此是CNN可以实现所在。 RNN系列:...
GCN
Graph Convolutional Networks(GCN): 图卷积神经网络,实际上跟CNN的作用类似,就是一个特征提取器,只不过它的对象是图数据。GCN精妙地设计了一种从图数据中提取特征的方法,从而让我们可以使用这些特征去对图数据进行:节点分类 、图分类、边预测,还可顺便得到图的嵌入表示。 【图结构】之图神经网络GCN详解 图卷积网络(Graph Convolutional N...
GAT
GCN缺点: 模型对于同阶邻域上分配给不同邻居的权重是完全相同的(也就是GAT论文里说的:无法允许为邻居中的不同节点指定不同的权重)。这一点限制了模型对于空间信息的相关性的捕捉能力,这也是在很多任务上不如GAT的根本原因。 GCN结合临近节点特征的方式和图的结构依依相关,这局限了训练所得模型在其他图结构上的泛化能力。 GAT提出了用注意力机制对邻近节点特征加权求和。邻近节点特...
Tiling
Tiling 在深度学习网络中,Conv, MatMul等操作都会降维为矩阵乘(GEMM)进行计算,业界的深度学习计算库如oneDNN、cuDNN等都对GEMM计算做了很多优化,其中最常见且通用的手段就是对于内存层级的tiling。Tiling的目的主要是为了满足芯片片上存储及计算流水线的需求,以最大化计算并行性和数据局部性,从而发挥硬件的极致性能。 AI芯片内buffer size有限...
超参
深度学习的优化算法,说白了就是梯度下降。每次的参数更新有两种方式: 遍历全部数据集计算一次损失函数,然后算函数对各个参数的梯度,更新梯度。 这种方法每更新一次参数都要把数据集里的所有样本都看一遍,计算量开销大,计算速度慢,不支持在线学习,这称为Batch gradient descent,批梯度下降。 每看一个...
深度学习基础
目标函数 当任务在试图预测数值时,最常⻅的损失函数是平⽅误差(squared error),即预测值与实际值之差的平⽅。 当试图解决分类问题时,最常⻅的⽬标函数是最小化错误率, 我们通常将可⽤数据集分成两部分:训练数据集⽤于拟合模型参数,测试数据集⽤于评估拟合的模型。 无监督学习 数据中不含有“⽬标”的机器学习问题为⽆监督学习。例子 聚类 主成分分析 因果...
Caffe
源码安装 # 下载源码 git clone https://github.com/BVLC/caffe.git # 根据当前环境基于模板修改Makefile.config cp Makefile.config.example Makefile.config vim Makefile.config # 用make编译caffe bin, 找不到的头文件, lib, 通过安装对应lib,修...
CV
深度学习经典目标检测方法 One-stage: YOLO系列 只有一步“回归”操作。 优点:速度非常快,适合做实时检测任务 缺点:效果通常不会太好 Two-stage: Faster-Rcnn,Mask-Rcnn系列 多了一步“预选”操作。 优点:效果通常不错; ...
STL
C++ STL STRING的COPY-ON-WRITE技术 STL六大组件: 容器(Container), 存放数据 分配器(Allocators), “幕后英雄”, 为容器分配内存。allocator版本底层调用operator new, new调用malloc 迭代器(Iterators),操作数据 算法(Algorithms),操作数据的规则 ...
读薄《Professional CUDA C Programming》——全局内存
四、全局内存 本章将剖析核函数与全局内存的联系及其对性能的影响。本章将介绍CUDA内存模型, 并通过分析不同的全局内存访问模式来介绍如何通过核函数高效地利用全局内存。 CUDA内存模型概述 在现有的硬件存储子系统下,必须依靠内存模型获得最佳的延迟和带宽。CUDA内存模型结合了主机和设备的内存系统,展现了完整的内存层次结构,使你能显式地控制数据布局以优化性能。 内存层次结构的优点 一...