1、slim.conv2d:二维卷积
2、slim.nets.resnet_utils.conv2d_same():使用“SAME”填充的二维卷积
3、 tf.variable_scope()的original_name_scope 和 name的区别:
4、slim.utils.collect_named_outputs(collections, alias, outputs):为output的tensor添加别名,并将tensor添加到collections的列表中
5、slim.separable_conv2d():实现深度可分离卷积
6、slim.learning.train():开始训练
7、slim.evaluation.evaluation_loop():对模型的预测结果进行评估
7、slim.get_variables_to_restore(include=None, exclude=None):
8、slim.assign_from_checkpoint_fn():
9、tf.contrib.metrics.aggregate_metric_map():
1、slim.conv2d:二维卷积
函数原型:
convolution(inputs,
num_outputs,
kernel_size,
stride=1,
padding='SAME',
data_format =None,
rate = 1,
activation_fn = nn.relu,
normalizer_params=None,
weights_initializer = initializers.xavier_initializer(),
weights_regularizer = None,
biases_initializer = init_ops.zeros_initializer(),
biases_regularizer = None,
reuse = None,
variables_collections = None,
outputs_collections = None,
trainable = True,
scope = None):
参数介绍:
inputs:指需要做卷积的输入图像
num_outputs:指定卷积核的个数(就是filter的个数)
kernel_size:N个正整数的序列,指定卷积核的空间维度。 可以是单个整数,则所有空间维度具有相同值。
stride:一组N个正整数,指定计算输出的stride。 可以是一个整数,则所有空间维具有相同的值。指定任何stride!= 1与指定任何rate!= 1不相容。
padding:为padding的方式选择,VALID或者SAME
data_format:是用于指定输入的input的格式
rate:N个正整数的序列,指定用于萎缩卷积的扩张率。 可以是单个整数,以指定所有空间维度的相同值。 指定任何rate!= 1与指定任何stride!= 1不兼容。
activation_fn:用于激活函数的指定,默认的为ReLU函数
normalizer_fn:用于指定正则化函数
normalizer_params:用于指定正则化函数的参数
weights_initializer:用于指定权重的初始化程序
weights_regularizer:为权重可选的正则化程序
biases_initializer:用于指定biase的初始化程序
biases_regularizer: biases可选的正则化程序
reuse:指定是否共享层或者和变量
variable_collections:指定变量的集合列表或者字典名,变量(weight、biase)会被添加到这个集合中。
outputs_collections:指定一个列表名,输出(output)会被添加到这个列表。这个(列表名,[output])的键值对位于Graph类的self._collection字典中,如果该字典中没有列表名的关键字,则(列表名,[output])会被创建。
trainable::卷积层的参数是否可被训练,如果为True,则同样会将变量添加到计算图集合GraphKeys.TRAINABLE_VARIABLES中
scope:共享变量所指的variable_scope
函数原型:conv2d_same(inputs, num_outputs, kernel_size, stride, rate=1, scope=None)
inputs: 一个4维tensor:[batch, height_in, width_in, channels].
num_outputs:卷积核的个数
kernel_size: 卷积核的尺寸
stride: 输出的stride
rate: 空洞卷积膨胀率
scope: Scope.
net = conv2d_same(inputs, num_outputs, 3, stride=stride)
#等价于
net = slim.conv2d(inputs, num_outs, 3, stride=1, padding='SAME')
net = subsample(net, factor=stride)
# 但是和net = slim.conv2d(inputs, num_outputs, 3, stride=stride, padding='SAME')不等价,因为输入的高或宽是偶数时, 它是不同的,这就是我们添加当前函数的原因。