教你用TensorFlow搭建AlexNet

勿满足于眼前的小小成就。你要问自己,我这辈子只有这样吗。

AlexNet模式是在2012年提出来的,并且在当年获得了ILSVRC的冠军,top-5的错误率为16.4%,比第二名的成绩26.2%高出许多,也从此开始确立了深度学习在计算机视觉的统治地位,是一块重要的里程碑。

该模型包含了几个比较新的技术点:

  1. 成功使用ReLu作为CNN的激活函数,验证了其效果在较深网络中比Sigmoid更好
  2. 成功应用Dropout,验证了其在实际中的效果
  3. 在CNN中使用重叠的最大池化,打破了之前普遍使用平均池化的模式,AlexNet全部使用最大池化,避免平均池化的模糊化效果,并提出了让步长比池化核尺寸小一些可以提升特征的丰富性
  4. 提出了LRN层,对局部神经元的活动创建竞争机制,使其中响应大的更大,小的更小,增强了模型的泛化能力
  5. 使用CUDA加速深度卷积网络的训练
  6. 使用了数据增强,使用了PCA

接下来将会使用TensorFlow搭建AlexNet,使用的数据为随机图片数据,如果你有兴趣可以自行下载ImageNet的数据进行训练兵测试

首先导入常用库并定义batch_size,num_batches

from datetime import datetime
import math
import time
import tensorflow as tf

batch_size = 32
num_batches = 100

定义一个用于展示网络层结构的函数

def print_activations(t):
    print(t.op.name, ' ', t.get_shape().as_list())

定义一个函数inference,接受images为参数,返回第五个池化层和所有需要训练的模型参数

首先定义第一个卷积层,使用tf.truncated_normal截断的正太分布函数初始化卷积核的参数kernel,卷积核的尺寸为11X11,颜色通道为3,卷积核的数量为64。使用tf.nn.conv2d对输入的images进行卷积操作,将strides步长设置为4X4,padding模式设置为SAME,将卷积核的biases全部初始化为0,再使用tf.nn.bias_ass将conv和biases加起来,并使用激活函数tf.nn.relu对结果进行非线性处理,最后使用开始定义的print_activations将结构打印出来,将可训练的参数添加到parameters中。

def inference(images):
    parameters = 
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

幽蓝丶流月

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值