深度学习实战篇之 ( 十五) -- TensorFlow之GoogLeNet

科普知识

AAAI的英文全称是 the Association for the Advance of Artificial Intelligence,中文意思是国际先进人工智能协会。

国际先进人工智能协会(American Association for Artificial Intelligence)国际先进人工智能协会是人工智能领域的主要学术组织之一。该协会主办的年会(AAAI, The National Conference on Artificial Intelligence)是一个主要的人工智能学术会议。

e44e0407dcef06cf72d3ec6c4d7025d5.png

# 前言

SEP.

理论篇上一期文章我们学习了GoogLeNet网络,其核心的是Inception模块,通过该模块可以将神经网络设计的得很深,今天我们将通过TensorFlow进行Inception模块的实战,希望大家喜欢。

98b349c8db520e1e2a11e40980cf3ff7.png

TensorFlow之Inception实战

d72a9dc664c7b0a2f264d23ea4c4dead.png

本期实战,我们采用人脸表情数据集进行训练,模型主要是Inception模块,由于只是展示demo,我们只设计简单的一层就好,代码将会开源到gitee.

1.数据准备

96835e9e70d7387e049e4c8fa68853b3.png

本次数据采用RAFDB人脸表情数据集,包含七个分类:平和,开心,悲伤,

惊讶,厌恶,愤怒,害怕。与之前的数据集类似,该人脸表情数据集也包含

训练集合测试集,每个集中没别包含7个文件夹(表情)。与之前的数据集

一样,该数据集包含训练集与测试集,每个集包含七个文件夹(表情)

  一些样本展示

b8e0120c8cb7475cbaa0b2858b0cf59e.png

f86bb0f449cd61757063a47ebd0dd458.png

2.网络结构

9d1025f540dc512cd88608d620c70d3b.png

1c590660a82692a94913fcae7a4b6fda.png

网络结构如上,由于改模块很简单,我们就不仔细分析网络的参数了,具体的参数可以从上一期文章中看到哦(深度学习理论篇之 ( 十六) -- GoogLeNet之再探深度之谜),从下面的代码中,大家应该能够看到每一个层的维度变换,实在看不懂的,我相信只要大家认真的调试一定没问题,建议打印每一行代码的维度信息,一遍清楚的知道特征图在网络中是如何一步步变化的。

def inference(images, batch_size, n_classes,drop_rate):
    
    #左1x1 conv
    conv1 = Conv_layer(names = 'conv_block1', input = images , w_shape = [1, 1, 3, 128], b_shape = [128], strid = [1, 1])
    # print("******** conv1 {} ".format(conv1.shape))


    #1x1 conv
    conv2 = Conv_layer(names = 'conv_block2', input = images , w_shape = [1, 1, 3, 64], b_shape = [64], strid = [1, 1])
    # 第二层卷积1
    conv2_1 = Conv_layer(names = 'conv_block2_1', input = conv2 , w_shape = [3, 3, 64, 192], b_shape = [192], strid = [1, 1])
    # print("******** conv2_1 {} ".format(conv2_1.shape))


    #1x1 conv
    conv3 = Conv_layer(names = 'conv_block3', input = images , w_shape = [1, 1, 3, 64], b_shape = [64], strid = [1, 1])
    # 第二层卷积2
    conv3_1 = Conv_layer(names = 'conv_block3_1', input = conv3 , w_shape = [5, 5, 64, 96], b_shape = [96], strid = [1, 1])
    # print("******** conv3_1 {} ".format(conv3_1.shape))


    #3x3 max pooling
    pool_1 = Max_pool_lrn(names = 'pooling1', input = images , ksize = [1, 3, 3, 1], is_lrn = False)
    # 第二层卷积2
    conv4 = Conv_layer(names = 'conv_block4', input = pool_1 , w_shape = [1, 1, 3, 64], b_shape = [64], strid = [1, 1])
    print("******** conv4 {} ".format(conv4.shape))


    concat_op = tf.concat([conv1, conv2_1, conv3_1, conv4],3)
    conv5 = Conv_layer(names = 'conv_block5', input = concat_op , w_shape = [1, 1, 480, 64], b_shape = [64], strid = [1, 1])
    # print("******** concat_op {} ".format(concat_op.shape))


如果仔细查看网络结构,我在输出的最后一层添加了一层1x1卷积,目的是为啥呢,

当然是家里没矿,只能降低维度了。

3.训练过程

de0aad998c09f84a0c01f0deca8245f5.png

3eb048f510d11928cf5dcadc037d0378.png

源码获取:https://gitee.com/fengyuxiexie/inception

576dd68d06ed9448cbf64dfe396d50e9.gif

END

结语

  本期分享结束了,模块很简单,希望同学们也多去联系联系哦,另外,本次我们新增了人脸表情数据集,需要的同学可以后台咨询哦。

编辑:玥怡居士|审核:小圈圈居士

708e6f291d1ba1f6d02220d5be713da5.png

IT进阶之旅

往期回顾

深度学习实战篇之 ( 十四) -- TensorFlow之VGG16

深度学习实战篇之 ( 十三) -- TensorFlow之AlexNet

深度学习实战篇之 ( 十二) -- TensorFlow之LetNet-5

过去的一年,我们都做了啥:

【年终总结】辞旧迎新,2020,我们再出发

【年终总结】2021,辞旧迎新再出发

fb44def5a8bf149473b581f0971ae4e2.gif

点个"赞"再走吧~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值