TensorFlow 基础(12)VGGNet

awesome-tensorflow

VGGNet(11-19层)

在 2014 年,由于 AlexNet 的出现,引起大家都 CNN 的关注,所以牛津大学计算机视觉组(Visual Geometry Group)和 Google DeepMind 公司的研究员一起研发出了新的深度卷积神经网络 —— VGGNet,并取得了ILSVRC2014比赛分类项目的第二名(第一名是GoogLeNet,也是同年提出的)和定位项目的第一名。
深度神经网络的深度可以做的更深也得益于 GPU 出现。

网络结构

- VGG由5层卷积层
- 3层全连接层
- softmax输出层构成
- 层与层之间使用max-pooling(最大化池)分开,所有隐层的激活单元都采用ReLU函数。

特点

我们知道 CNN 一般都包含卷积层、池化层和全连接层,我们按这些层分别说明一下 VGGNet 的特点    
- 卷积层
    - 在 VGGNet 中尽量多使用 3 x 3 的卷积核来带了更多特征,好处减少参数数量,增加线性。
    - 使用 2 个 3 * 3 的卷积层来代替 5 * 5 卷积层 
    - 使用 3 个 3 * 3 的卷积层来代替 7 * 7 卷积层
- 池化层
    - 在池化层使用(2,2)的步长处理池化层,为什么用(2,2)表示更小池化层会得到更多![图](https://upload-images.jianshu.io/upload_images/8207483-edddc2427252f5fe.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

# neru feature_map image output
conv1_1 = tf.layers.conv2d(x_image,32,(3,3),padding='same',activation=tf.nn.relu,name='conv1_1')
conv1_2 = tf.layers.conv2d(conv1_1,32,(3,3),padding='same',activation=tf.nn.relu,name='conv1_2')
# 16 * 16
pooling1 = tf.layers.max_pooling2d(conv1_2,(2,2),(2,2),name='pool1')

conv2_1 = tf.layers.conv2d(pooling1,32,(3,3),padding='same',activation=tf.nn.relu,name='conv2_1')
conv2_2 = tf.layers.conv2d(conv2_1,32,(3,3),padding='same',activation=tf.nn.relu,name='conv2_2')
# 8 * 8
pooling2 = tf.layers.max_pooling2d(conv2_2,(2,2),(2,2),name='pool2')

conv3_1 = tf.layers.conv2d(pooling2,32,(3,3),padding='same',activation=tf.nn.relu,name='conv3_1')
conv3_2 = tf.layers.conv2d(conv3_1,32,(3,3),padding='same',activation=tf.nn.relu,name='conv3_2')
# 4 * 4
pooling3 = tf.layers.max_pooling2d(conv3_2,(2,2),(2,2),name='pool3')

你可能感兴趣的:(TensorFlow 基础(12)VGGNet)