Inception-v3网络结构搭建(基于tensorflow-slim)

#-*- coding:utf-8 -*-

import tensorflow as tf
#加载slim库
slim = tf.contrib.slim

#slim.arg_scope()函数可以用于设置默认的参数取值。此函数的第一个参数是一个函数列表,在这个列表中的函数将使用默认的参数设置。
with slim.arg_scope([slim.conv2d, slim.max_pool2d, slim.avg_pool2d], stride=1, padding='VALID'):
    """
    ……
    此处省略Inception-v3模型中其他的网络结构而直接实现最后一个。
    我们假设输入图片经过之前的神经网络钱箱传播的结果保存在变量net中
    net = 上一层的输出节点矩阵
    """
    net = 0
    #为一个Inception模块声明一个统一的变量命名空间
    with tf.variable_scope('Mixed_7c'):
        #给Inception模块中每一条路径声明一个命名空间
        with tf.variable_scope('Branch_0'):
            #实现一个过滤器边长为1,深度为320的卷积层
            branch_0 = slim.conv2d(net, 320, [1, 1], scope='Conv2d_0a_1*1')

        #Inception模块中的第二条路径。这条路径上的结构本身也是一个Inception结构
        with tf.variable_scope('Branch_1'):
            branch_1 = slim.conv2d(net,  384, [1, 1], scope='Conv2d_0a_1*1')
            #tf.concat函数可以将多个矩阵拼接起来。其中第一个参数制定了拼接的维度,这里给出的3指的是 矩阵是在深度这个维度上进行拼接
            branch_1 = tf.concat(3, [
                slim.conv2d(branch_1, 384, [1, 3], scope='Conv2d_0b_1*3'),
                slim.conv2d(branch_1, 384, [3, 1], scope='Conv2d_0c_3*1')])

        #第三条路径,也是个inception结构
        with tf.variable_scope('Branch_2'):
            branch_2 = slim.conv2d(net, 448, [1, 1], scope='Conv2d_0a_1*1')
            branch_2 = slim.conv2d(branch_2, 384, [3, 3], scope='Conv2d_0b_3*3')
            branch_2 = tf.concat(3, [
                slim.conv2d(branch_2, 384, [1, 3], scope='Conv2d_0c_1*3'),
                slim.conv2d(branch_2, 384, [3, 1], scope='Conv2d_0d_3*1')])

        # Inception模块中的第4条
        with tf.variable_scope('Branch_3'):
            branch_3 = slim.avg_pool2d(net, [3, 3], 'AvgPool_0a_3*3')
            branch_3 = slim.conv2d(branch_3, 192, [1, 1], scope='Conv2d_0b_1*1')

        #当前inception模块的最后输出是由上面四个结果拼接而来
        net = tf.concat(3, [branch_0, branch_1, branch_2, branch_3])



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值