resnet_v1_50源码的理解与分析

本文详细分析了TensorFlow中resnet_v1_50的源码,包括用法、网络结构和关键函数。重点解释了Block、bottleneck和unit的含义,以及如何通过`resnet_utils.stack_blocks_dense`构建ResNet50的主体架构。
摘要由CSDN通过智能技术生成

源代码链接:
https://github.com/tensorflow/models/blob/master/research/slim/nets/resnet_utils.py
https://github.com/tensorflow/models/blob/master/research/slim/nets/resnet_v1.py

1、TensorFlow中resnet_v1_50的用法

首先总结一下用法,源码中resnet_v1_50的参数如下:

def resnet_v1_50(inputs,
                 num_classes=None,
                 is_training=True,
                 global_pool=True,
                 output_stride=None,
                 spatial_squeeze=True,
                 store_non_strided_activations=False,
                 min_base_depth=8,
                 depth_multiplier=1,
                 reuse=None,
                 scope='resnet_v1_50'):

其中:

  • input:训练集,其格式为[batch, height_in, width_in, channels]
  • num_classes:样本的种类别数,用于定义出上层的节点个数。如果为“None”的话,其最终输出的应该是[batch,1,1,2048],若“spatial_stride=True”,则其最终输出为[batch,2048]
  • is_training:是否在训练模型中加入“Batch_Norm”层
  • global_pool:该层位于整个网络结构之后,位于“num_classes”之前。为“True”则表示对于网络最后一个“net”层的输出结果做一个全局的average pooling。所谓全局池化就是池化的stride等于输入的size,得到一个标量。
  • spatial_squeeze:将列表中维度等于1的维度去掉,如spatial_squeeze([B,1,1,C])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值