代码部分 参考了csdn上别的博主,经测试可以跑成功
复习:上一节的全连接神经网络
任意两个节点之间都有权重
全连接层处理图片时丢失了部分空间信息,因为为它把输入直接连成了一长串,但没有考虑他们在图片中的位置
处理图像时常用的二维卷积神经网络:考虑输入输出维度,做空间变换
工作方式:
输入图像1*28*28的张量 c*w*h
卷积层:保留图像的空间特征
feature maps:卷积之后,依然是三维张量,得到了4*24*24的图像 通道变了 高度宽度变了
feature maps:2*2下采样之后得到了4*12*12的图像,使用下采样时,通道数不变,图像高度宽度改变,下采样可以减少数据量,降低运算需求
5*5卷积,2*2下采样,维度由3阶到1阶(10个元素,一个向量),将张量展开成1维,上一讲用view来实现,
全连接层映射到10维输出,然后交叉熵损失,softmax计算分布
最终目的是将3维的图像转换到10维的线性空间中
把卷积下采样称为特征提取,全连接网络称为分类
卷积:
猫的图片,计算机读取RGB图像,是一个一个的格子--栅格图像,从自然界直接捕获
矢量图象:无法直接捕获,大部分人工生成,圆心在哪,边是啥颜色,用啥颜色填充,现画的
图像获取:ccd 数码采集器,光敏电阻,光锥可以识别一部分发射过来的光
输入图像c=3,3*w*h,,取3*w'*h'图像块(patch)来做卷积,输出是C*W*H
卷积运算过程
单通道卷积:输入1*5*5图像,卷积核3*3,输入与卷积核做数乘(对应的值相乘)
三通道卷积:RGB每个通道配一个卷积核,输入通道数量和卷积核数量一样,算出来三个矩阵之后做加法得到结果1*3*3,上下左右减去一行一列
多通道输入:卷积核是n**的张量,输出是1*3*3
假设要m个输出通道:m个卷积核卷积,然后拼接,m*w*h
卷积核的通道数量和输入通道数量一样,卷积核个数与输出通道数一样 即共享权重机制
把m个卷积核拼成一个4维张量,m*n*w*h、
卷积层代码:
代码:
import torch
in_channels,out_