一、引入
1.发展
2.特点
(1)全部使用3×3的卷积核,步长1;和2×2的池化核,步长2;通过不断加深网络结构提升性能。
(2)两个3×3卷积层串联优于一个7×7卷积层,使得CNN对特征学习能力更强。
(3)不用LRN层;越深层网络效果越好。
二、tensorflow实现
1.实现计算前向预测和反向测评时间
(1)导入
from datetime import datetime
import math
import time
import tensorflow as tf
(2)设置参数
#设置参数
batch_size = 32 #每个batch数据的大小
num_batches = 50 #一共测试50个batch数据
(3)封装VGG所用函数
def conv_op(input, name, wh, ww, n_out, dh, dw, p): #输入,范围名称,滤波器尺寸,滤波器输出通道数,步长,参数列表
n_in = input.get_shape()[-1].value #输入通道数
with tf.name_scope(name) as scope:
weight = tf.get_variable(scope+"w", shape=[wh, ww, n_in, n_out], dtype=tf.float32,
initializer=tf.contrib.layers.xavier_initializer_conv2d()) #滤波器
conv = tf.nn.conv2d(input, weight, (1, dw, dw, 1),padding='SAME') #步长 必须是边界填充SAME
bias_init_val = tf.constant(0.0, shape=[n_out],dtype=tf.float32)
biases = tf.Variable(bias_init_val, trainable=True, name='b') #偏置
result = tf.nn.bias_add(conv, biases) #前向
activati