我们知道,transformer要求将图片分为patch,然后输入网络进行计算,那么我们就需要将二维的图片处理成一维的embeding形式,今天我来给大家介绍一下图片处理的思路。
我们演示一下处理下面这张图片
我们将图片按照16*16的大小进行分片,得到的结果如下图所示
接下来我们需要将patch变成tensor。在此之前先介绍一下传统CNN图片处理和transformer图片处理之间的区别
我们可以看到,传统CNN图片处理得到的向量是三维的,而transformer图片处理得到的向量是二维的,其中num表示一张图片分片数量(也就是分成多少个patch),第二个维度中patch*patch表示每个patch的面积,channel表示通道数。
当我们训练网络的时候,通常需要将数据加载成batch的形式,一个batch里面通常包含多张图片,所以数据格式如下所示