神经网络总体架构

 
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, 
弄清楚这两个词代表的含义,才有可能设计出 好的参数网络结构

这一点极其重要,所以本页面就说这一件事 

参考