卷积神经网络介绍与LeNet5的Tf实现

一、卷积

1.卷积神经网络

一种特殊的前馈神经网络,主要特点为卷积和池化。通常结构为:

  1. 全连接的输入层;
  2. 多个卷积、池化和全连接层组合;
  3. 全连接输出层与softmax组合。

2.卷积运算

卷积:将两个来源的信息结合产生一组新的信息的数学运算,将特殊矩阵-核应用于张量上产生矩阵-特征图。

  • 三维张量:深度叠加;
  • 步长、填充(SAME/VALID):size_featuremap=(size_image+2*padding-size_kernel)/strides +1;
  • 局部连接--感受野receptivce field;
  • 权重共享--每个卷积核有单独的权重矩阵weights和偏差标量bias,在所有滑动位置相同(共享)。

3.TensorFlow的卷积实现

tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=None,data_format=None,name=None)

  • input表式输入张量的形状[batch_size,input_height,input_width,input_depth];
  • filter表示滤波器张量形状[filter_height,filter_width,filter_depth,output_depth];

二、池化

池化是指对卷积特征空间区域的聚合统计。

平均池化/最大池化,通常非重叠。

max_pool(value,ksize,strides,padding,data_format='NHWC',name=None)

  • value表示形状为[batch_size,input_height,input_width,input_depth]的输入张量。
  • 通道顺序:NHWC,NCWH;

三、LeNet

1.LeNet

Yann Lecun;

结构:输入-卷积1/ReLU1-pooling1-Conv2/ReLU-pooling2-fc-output;

2.使用tensorflow实现LeNet5

1.定义超参数及占位符

X=tf.placeholder(dtype=tf.float32, name="x", shape=[None, n_inputs])

x_ = tf.reshape(x, shape=[-1, n_width, n_height, n_depth])

2.定义中间的卷积核(w、b)及卷积层(conv2d)、激活层(relu)、池化层----- relu( conv(x,w) +b )

# create first set of convolutional layers

layer1_w = tf.Variable(tf.random_normal(shape=[4,4,n_depth,32],

                                        stddev=0.1),

                       name='l1_w')

layer1_b = tf.Variable(tf.random_normal([32]),

                       name='l1_b')

layer1_conv = tf.nn.relu(tf.nn.conv2d(x_,

                                      layer1_w,

                                      strides=[1,1,1,1],

                                      padding='SAME'

                                     ) +  layer1_b )

layer1_pool = tf.nn.max_pool(layer1_conv,

                             ksize=[1,2,2,1],

                             strides=[1,2,2,1],

                             padding='SAME'

                            )

3.Flat-fc-relu

tf.nn.relu(tf.matmul(tf.reshape(layer2_pool, [-1, 64*7*7*1]),layer3_w) +layer3_b )

4.输出层

layer4_out = tf.matmul(layer3_fc,layer4_w)+layer4_b

model = layer4_out

5.定义损失函数softmax_cross_entropy_with_logits,优化器AdamOptimizer

# loss function

entropy = tf.nn.softmax_cross_entropy_with_logits(logits=model, labels=y)

loss = tf.reduce_mean(entropy)

# optimizer function

optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值