前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习实战篇之 ( 十五) -- TensorFlow之GoogLeNet

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

作者头像
用户5410712
发布2022-06-01 20:15:55
2750
发布2022-06-01 20:15:55
举报
文章被收录于专栏:居士说AI

科普知识

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

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

# 前言

SEP.

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

TensorFlow之Inception实战

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

1.数据准备

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

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

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

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

一些样本展示

2.网络结构

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

代码语言:javascript
复制
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.训练过程

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

END

结语

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT进阶之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档