Tensorflow 卷积神经网络基础

一. 卷积层实现

在Tensorflow中,可以通过自定义权值的底层方式,也可以通过调用线程的卷积层类的高层方式搭建卷积层的网络。

1. 自定义权值

import tensorflow as tf 
x = tf.random.normal([2,5,5,3]) # 模拟输入,3 通道,高宽为5
w = tf.random.normal([3,3,3,4]) # 4 个3x3 大小的卷积核
# 步长为,padding 设置为输出、输入同大小
# 需要注意的是, padding=same 只有在strides=1 时才是同大小
out = tf.nn.conv2d(x,w,strides=1,padding='SAME')
'''
out.shape([2,5,5,4])'''
import tensorflow as tf 
x = tf.random.normal([2,5,5,3])
w = tf.random.normal([3,3,3,4])
# 高宽先padding 成可以整除3 的最小整数6,然后6 按3 倍减少,得到2x2
out = tf.nn.conv2d(x,w,strides=3,padding='SAME')
'''
out.shape([2,2,2,4])'''
# 根据[cout]格式创建偏置向量
b = tf.zeros([4])
# 在卷积输出上叠加偏置向量,它会自动broadcasting 为[b,h',w',cout]
out = out + b

2. 卷积层

import tensorflow as tf 
x = tf.random.normal([2,5,5,3])
layer = tf.keras.layers.Conv2D(4,kernel_size=3,strides=1,padding='SAME')
out = layer(x)
'''
out.shape([2,5,5,4])'''

二. 池化层

在卷积层中,通过调整步长来实现特征图高宽成倍缩小,池化层是专门进行图片缩减功能的网络层,主要有:最大池化层、平均池化层。

1. 最大池化层

tf.keras.layers.MaxPooling2D(pool_size=3,strides=2)

2. 平均池化层

tf.keras.layers.AveragePooling2D(pool_size=3,strides=2)

三. BatchNorm层

参数标准化层,使得网络的超参数设定更加自由,比如更大的学习率,更随意的网络初始化。

以LeNet-5网络模型为例,在卷积层后添加BN层

network = Sequential([ # 网络容器
layers.Conv2D(6,kernel_size=3,strides=1),
# 插入BN 层
layers.BatchNormalization(),
layers.MaxPooling2D(pool_size=2,strides=2),
layers.ReLU(),
layers.Conv2D(16,kernel_size=3,strides=1),
# 插入BN 层
layers.BatchNormalization(),
layers.MaxPooling2D(pool_size=2,strides=2),
layers.ReLU(),
layers.Flatten(),
layers.Dense(120, activation='relu'),
# 此处也可以插入BN 层
layers.Dense(84, activation='relu'),
# 此处也可以插入BN 层
layers.Dense(10)
])

BN层在训练阶段和测试阶段行为不同,通过设置网络的参数training=True来区分训练和测试(False)
 

out = network(x, training=True) #训练阶段

out = network(x, training=False) #测试阶段

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪易

给我来点鼓励吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值