深度学习之卷积神经网络
卷积神经网络 - 结构
卷积层
通过在原始图像上平移来提取特征
激活层
增加非线性分割能力
池化层
减少学习的参数,降低网络的复杂度(最大池化和平均池化)
全连接层
卷积层(Convolutional Layer)
卷积核 - filter - 过滤器 - 卷积单元 - 模型参数
个数
大小 1*1 3*3 5*5
卷积如何计算?
输入
5*5*1 filter 3*3*1 步长 1
输出
3*3*1
步长
输入
5*5*1 filter 3*3*1 步长2
输出
2*2*1
零填充的大小
6 总结-输出大小计算公式
7 多通道图片如何观察
输入图片
5*5*3 filter 3*3*3 + bias 2个filter 步长2
H1=5
D1=3
K=2
F=3
S=2
P=1
H2=(5-3+2)/2+1=3
D2=2
输出
3*3*2
卷积网络API
tf.nn.conv2d(input, filter, strides=, padding=)
input:输入图像
要求:形状[batch,heigth,width,channel]
类型为float32,64
filter:
weights
变量initial_value=random_normal(shape=[F, F, 3/1, K])
strides:
步长 1
[1, 1, 1, 1]
padding: “SAME”
“SAME”:越过边缘取样
“VALID”:不越过边缘取样
1)掌握filter要素的相关计算公式
2)filter大小
1x1,3x3,5x5
步长 1
3)每个过滤器会带有若干权重和1个偏置
激活函数
sigmoid
1/(1+e^-x)
1)计算量相对大
2)梯度消失
3)输入的值的范围[-6, 6]
Relu的好处
1)计算速度快
2)解决了梯度消失
3)图像没有负的像素值
tf.nn.relu(features)
池化层(Polling)
利用了图像上像素点之间的联系
tf.nn.max_pool(value, ksize=, strides=, padding=)
value:
4-D Tensor形状[batch, height, width, channels]
ksize:
池化窗口大小,[1, 2, 2, 1]
strides:
步长大小,[1, 2, 2, 1]
padding:“SAME”