Alexnet

 AlexNet整个网络结构由8层神经元构成,前5层为卷积层,用于提取特征,后3层为全连接层,用于图像分类。

1.输入图片是227*227*3的通道图片

2.第一层使用11*11的卷积核,滑动步长为4,输出96个特征图,并进行最大池化

3.第二层使用5*5的卷积核,产生256个特征图,并进行最大池化

4.第三层和第四层均使用3*3的卷积核,输出384个特征图

5.第五层使用3*3卷积核,输出256个特征图,并进行池化

6.第六层、第七层为全连接层,分别包含4096个隐层,也就是到全连接层时只剩4096个特征值

7.最终,第八层为Softmax层,得到最后的结果。

import tflearn
from tflearn.layers.core import input_data,dropout,fully_connected
from tflearn.layers.conv import conv_2d,max_pool_2d
from tflearn.layers.normalization import local_response_normalization
from tflearn.layers.estimator import regression
import tflearn.datasets.oxflower17 as oxflower17
X,Y=oxflower17.load_data(one_hot=True,resize_pics=(227,227))

network=input_data(shape=[None,227,227,3])
#1
network=conv_2d(network,96,11,strides=4,activation='relu')
network=max_pool_2d(network,3,strides=2)
network=local_response_normalization(network)
#2
network=conv_2d(network,256,5,activation='relu')
network=max_pool_2d(network,3,strides=2)
network=local_response_normalization(network)
#3.4
network=conv_2d(network,384,3,activation='relu')
network=conv_2d(network,384,3,activation='relu')
#5
network=conv_2d(network,256,3,activation='relu')
network=max_pool_2d(network,3,strides=2)
network=local_response_normalization(network)
#第一层全连接以0.5的概率dropout
network=fully_connected(network,4096,activation='tanh')
network=dropout(network,0.5)
#第二层全连接
network=fully_connected(network,4096,activation='tanh')
network=dropout(network,0.5)
#第三层全连接 softmax输出分类结果
network=fully_connected(network,17,activation='softmax')
#定义优化算法,损失函数
network=regression(network,optimizer='momentum',loss='categorical_crossentropy',learning_rate=0.001)
#training
model=tflearn.DNN(network,checkpoint_path='model_alexnet',max_checkpoints=1,tensorboard_verbose=2)
#全部数据的10%作为验证集,训练1000轮,每一批放入64条样本数据
model.fit(X,Y,n_epoch=1000,validation_set=0.1,shuffle=True,show_metric=True,
         batch_size=64,snapshot_step=200,snapshot_epoch=False,run_id='alexnet_oxflowers17')

使用ReLU和dropout也起到了很重要的作用,使用RELU可以大大加快收敛速度,而dropout达到了防止模型过拟合的效果,增强了泛化能力。

AlexNet的优势:

1.使用RELU函数作为激活函数,解决了梯度弥散的问题

2.训练时在全连接层使用了dropout,随机忽略了一些神经元,以避免模型过拟合

3.CNN使用了重叠的最大池化,(第一层,第二层,第五层),避免了平均池化的模糊效果,有重叠和覆盖,提高了特征的丰富性。

4.提出了LRN(局部相应归一化层),对局部神经元的活动创建竞争机制,使得其响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,提高了模型的泛化能力

5.利用GPU强大的并行计算

6.数据增强

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值