TensorFlow-Slim可以更加简洁地实现一个卷积层,提高代码的可读性
import tensorflow.contrib.slim as slim
一个卷积层需要的原生API代码量:
with tf.variable_scope('layer1-conv1'):
conv1_weights = tf.get_variable(
"weight", [CONV1_SIZE, CONV1_SIZE, NUM_CHANNELS, CONV1_DEEP],
initializer=tf.truncated_normal_initializer(stddev=0.1))
conv1_biases = tf.get_variable("bias", [CONV1_DEEP], initializer=tf.constant_initializer(0.0))
conv1 = tf.nn.conv2d(input_tensor, conv1_weights, strides=[1, 1, 1, 1], padding='SAME')
relu1 = tf.nn.relu(tf.nn.bias_add(conv1, conv1_biases))
使用Slim:
#slim 有三个参数是必须填写的:第一个参数是输入节点的矩阵,第二个参数是当前卷积层过滤器的深度,第三个参数是过滤器的尺寸
#剩下的都可以使用默认值
#此外还提供了 slim.arg_scope()来设置默认的参数取值,并且指定slim里的哪些函数使用这些默认参数
with slim.arg_scope([slim.conv2d,slim.max_pool2d,slim.avg_pool2d],stride=1,padding='VALID')
net=slim.conv2d(input,32,[3,3])
Slim可以很好的对代码进行瘦身,并且提高代码的可读性~
关于SLim的更多细节可以参考博文Slim