零、CNN常用命令
- 卷积
tf.nn.conv2d(input[batch,h,w,c],filter[h,w,c,out],strides=[1,h,w,1],padding='SAME'/'VALID',use_cudnn_on_gpu=None,data_format=None,name=None)
有关参数详细说明,见:https://blog.youkuaiyun.com/xierhacker/article/details/53174594
- 采样
tf.nn.max_pool
tf.nn.avg_pool(value[batch,h,w,c], ksize[1,h,w,1], strides=[1,dh,dw,1], padding='SAME'/'VALID', data_format=’NHWC’, name=None)
- 非线性
tf.nn.relu(z)
- 全连层
tf.nn.relu_layer(input_op,kernel,biases,name=scope)
tf.nn.relu(tf.add(tf.matmul(current,kernels),bias))
- softmax
tf.nn.softmax
- 损失
tf.nn.l2_loss
- 非线性
tf.nn.relu
- 其他
tf.nn.bias_add(conv,biases)
一、VGG16模型
二、VGG网络常见问题
-
卷积后尺寸计算
w‘=(w - kernel_size + 2*padding)/stride +1
举个例子:224*224*3的图片经过第一层conv3-64 ,kernel_size=3,stride=1,pad=1,每个卷积核是3*3*3通道的,共有64个卷积核
w'=h’=(224-3+2*1)/1+1=224
卷积后的大小为224*224*64
结论:用kernel_size=3,stride=1,pad=1进行卷积,卷积后长宽不变,通道数看卷积核数量
-
各层尺寸和参数数量
由table2可知:vgg16的参数量在138M(138344128),vgg19的参数量在1