TensorFlow下的slim模块

1、slim.arg_scope:可以定义一些函数的默认参数值,在scope内,重复用到的函数可以不用吧所有参数都写一遍。

with slim.arg_scope([slim.conv2d, slim.fully_connected], 
                    trainable=True,
                    activation_fn=tf.nn.relu, 
                    weights_initializer=tf.truncated_normal_initializer(stddev=0.01), 
                    weights_regularizer=slim.l2_regularizer(0.0001)):
    with slim.arg_scope([slim.conv2d], 
                        kernel_size=[3, 3], 
                        padding='SAME',
                        normalizer_fn=slim.batch_norm):
        net = slim.conv2d(net, 64, scope='conv1'))
        net = slim.conv2d(net, 128, scope='conv2'))
        net = slim.conv2d(net, 256, [5, 5], scope='conv3'))

一个slim_scope内可以用list来勇士定义多个函数的默认参数,同时允许相互嵌套。在其中调用的函数中,可以不用重复写一些参数(倒数二三行不用重复写kernel_size=[3,3[),但也允许覆盖原来的参数(最后一行[5,5])
2、slim.conv2d:卷积层,一般调用方法:

net = slim.conv2d(inputs, 256, [3, 3], stride=1, scope='conv1_1')

前三个参数一次为网络的输入,输出的通道,卷积核大小,stride是卷积步长。除此之外,还有几个经常被用到的参数:

padding : 补零的方式,例如'SAME'
activation_fn : 激活函数,默认是nn.relu, VGG16中就用的是ReLU
normalizer_fn : 正则化函数,默认为None,这里可以设置为batch normalization,函数用slim.batch_norm
normalizer_params : slim.batch_norm中的参数,以字典形式表示
weights_initializer : 权重的初始化器,initializers.xavier_initializer()
weights_regularizer : 权重的正则化器,一般不怎么用到
biases_initializer : 如果之前有batch norm,那么这个及下面一个就不用管了
biases_regularizer : 
trainable : 参数是否可训练,默认为True

3、slim.max_pool2d:池化层:

net = slim.max_pool2d(net, [2, 2], scope='pool1')

4、slim.fully_connected:全连接层,前两个参数分别为网络输入、输出的神经元数量。

slim.fully_connected(x, 128, scope='fc1')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值