1. 提取特征 2. 分类 这两点是 神经网络的总纲,分类就是使用全连接,那这里的“特征”到底是什么? 后面举例说明
一张图像的基本组成是像素,一个像素由RGB三色组成,即使用三个维度的颜色表示一个像素 像素就是图像的特征,特征的shape即像素的shape是[3],即特征向量有3个维度 一个句子由多个单词组成,每个单词就是一个特征, 在传统NLP中,单词向量的维度通常不超过300 在大模型中,单词向量的维度可能过千或过万 图像是2维的,这里指一个图像中的像素排列之后,有高度,有宽度,是2维列表 句子是1维的,这里指一句话有多个单词,是一个1维列表, 特征的维度叫特征shape或特征图,注意与 事物的维度/shape 区分 |
特征图就是特征shape,即使用什么shape的矩阵描述一个特征 特征图,是指特征值的形状,即特征shape 特征指一定范围内组成事物最基本的元素,比如: 句子由单词组成,那么单词就是句子的特征 图像由像素组成,一个像素就是图像的一个特征, 特征可以由向量表示,即使用多个维度的数据描述一个事物, 如果是RGB,像素向量的维度为3,即从3个不同的层面描述一个像素,描述一个特征 序列处理:句子与单词 一个单词 占一个维度 记为[1] 一句话有多个单词,单词个数为seq_len,记为[seq_len] import torch torch.tensor([0,2,1]).shape torch.Size([3]) [3]就可以表示seq_len=3,即有三个单词的一个句子 先不说批次,那么这[seq_len]中谁是特征,谁又是特征shape? 不着急回答,先分析: 特征shape是特征值的shape,也就是形状,也就是多个数值组成的 向量/矩阵 的shape 特征shape就是 一个层面/维度 上,数据又进一步细分后的不同数值 这里说 “层面” 更容易理解一些, 就本文处理这个层面,[seq_len]对应 某一句话的 某一个层面的处理, 这个层面是什么?就是对单词进行编码,所以这里应该是[1,seq_len] 这个1代表使用单词编码的方式表示这个场景, 而每个单词对应什么样的编码索引,是这个层面下,更细一级的划分, 就是seq_len,也写成L,写什么名称不是关键, 关键是要理解为什么要这么划分 词转向量 索引编码来代表一个单词,太简易,要用一个n维向量来表示一个单词,embedding_dim 一句话就成了[seq_len,emebedding_dim] emebedding_dim就是特征层数,也就是常说的特征数,从emebedding_dim个层面表示一个单词 区域处理:一张GRB彩色图片 先不说批次,就说一张GRB图片,便于解释 特征shape就是特征值的形状,一个特征shape是 一组数值组成的向量/矩阵的shape GRB三色就是三个层面,绿色,红色,蓝色 图像的[高,宽]形状就是某个层面上数据的shape,也就是特征shape 三个层面,说的都是颜色这个维度,所以它们的特征shape是一致的 虽说都是颜色,但毕竟是不同的颜色,所以特征为3,也就是层面为3 它还有其他名字,比如通道channel,in_features,C 等等, 但个人还是感觉使用“层面”这个词,更容易让我理解它命名背后所代表的含义 |
|
|
|
特征层面,特征shape, 弄清楚这两个词代表的含义,才有可能设计出 好的参数网络结构 这一点极其重要,所以本页面就说这一件事