前提--假设输入的图片是固定大小 目标---分类 输出---是经过softmax整理的1×n向量 向量---长度表示多少种类型,判断图片是什么类型用1表示,其他所有类型用0表示。
之前都是全连接,一个neuron(参数)要看到整张图片才能判断一个特征,这是没有必要的,所以能进行简化,只要关注小范围就行:方法一就是receptive field来实现,方法二是用filter来实现
方法一:receptive field实现
最经典的receptive field是只看宽高一般为3×3叫做kernel size,一般同一个receptive field会有一组neuron去关联它。bias就是一个数值乘以各个weight参数×输入的特征
但是对于同种类型的图片上的相同特征的位置是不一样的,难道每个receptive field与之关联的一组neuron都要加上检测这个特征的neuron吗?而共享参数就是为了解决这个问题,共享参数是说neuron的参数是一样的,但是输入是不一样的,所以输出也就不一样了。cnn就是这样组合而来的:convolutional layer就叫卷积层。
方法二:filter实现
输入还是一张图片矩阵,经过filter3×3得到一组新的矩阵,得到的结果为feature map,filter的个数有多个,feature map的个数由filter的个数决定的,一般图片输入channel都是3,但是经过filter之后那么channel会发生变化,feature map的channel=filter的个数。看feature map的3×3其实就是看原图的5×5,所以经过多次的filter之后看的就是整张图片了。
两种方法neuron的参数就是filter,Filter本身每个单元格的值就是不同Nueral共用的参数罢
pooling的作用就是把图片变小--只要部分的特征但是整个图片的重要信息不会丢失
flatten的意思是把矩阵的数值拉直成一个向量,然后再进入到fully connected layer