【TensorFlow】如何理解tensorflow.contrib.slim函数?

slim库是tensorflow中的一个高层封装,它将原来很多tf中复杂的函数进一步封装,省去了很多重复的参数,以及平时不会考虑到的参数。可以理解为tensorflow的升级版。
导入方式:
import tensorflow as tf
import tensorflow.contrib.slim as slim
常用函数
slim.conv2d
slim.conv2d是基于tf.conv2d的进一步封装,省去了很多参数,一般调用方法如下:
net = slim.conv2d(inputs, 256, [3, 3], stride=1, scope='conv1_1')
前三个参数依次为网络的输入,输出的通道,卷积核大小,stride是做卷积时的步长。除此之外,还有几个经常被用到的参数:
padding : 补零的方式,例如'SAME'activation_fn : 激活函数,默认是nn.relunormalizer_fn : 正则化函数,默认为None,normalizer_params : slim.batch_norm中的参数,以字典形式表示weights_initializer : 权重的初始化器,initializers.xavier_initializer()weights_regularizer : 权重的正则化器,一般不怎么用到biases_initializer : 如果之前有batch norm,那么这个及下面一个就不用管了biases_regularizer : trainable : 参数是否可训练,默认为True
slim.max_pool2d
 这个函数更简单了,用法如下:
net = slim.max_pool2d(net, [2, 2], scope='pool1')
slim.fully_connected
slim.fully_connected(x, 128, scope='fc1')
        前两个参数分别为网络输入、输出的神经元数量。
slim.arg_scope
slim.arg_scope可以定义一些函数的默认参数值,在scope内,我们重复用到这些函数时可以不用把所有参数都写一遍。
slim.variable 
 在原生的Tensorflow中,创建Variable需要一个预定义的值或者一种初始化机制(比如从一个高斯分布中随机采样)。此外,如果一个变量需要在一个特定的设备上(如GPU)创建,那么必须被明确说明。为了减少变量创建所需的代码,TF-Slim提供了一些封装函数(定义在 variables.py 中),可以使得用户定义变量变得简单。
 举个例子,定义一个权重(weight)变量,使用一个截断的正态分布来初始化,使用l2 loss正则化,并将该变量放置在CPU中,我们只需要声明如下:
weights = slim.variable('weights',
                                    shape=[10, 10, 3 , 3],
                                    initializer=tf.truncated_normal_initializer(stddev=0.1),
                                    regularizer=slim.l2_regularizer(0.05),
                                    device='/CPU:0')
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值