关于CIFAR10示例

时间:2016-08-01 03:29:32

标签: tensorflow deep-learning

CIFAR10示例中,conv2定义如下。如何知道kernel = _variable_with_weight_decay中的shape=[5,5,64,64]应该给出这些值,例如5,5,64,64此外,在biases = _variable_on_cpu('biases', [64], tf.constant_initializer(0.1))中,shape也定义为[64],如何得到那些价值观?

# conv2
with tf.variable_scope('conv2') as scope:
   kernel = _variable_with_weight_decay('weights',
                                     shape=[5, 5, 64, 64],
                                     stddev=5e-2,
                                     wd=0.0)
   conv = tf.nn.conv2d(norm1, kernel, [1, 1, 1, 1], padding='SAME')
   biases = _variable_on_cpu('biases', [64], tf.constant_initializer(0.1))
   bias = tf.nn.bias_add(conv, biases)
   conv2 = tf.nn.relu(bias, name=scope.name)
   _activation_summary(conv2)

1 个答案:

答案 0 :(得分:0)

查看source,我们看到拨打_variable_with_weight_decay的电话归结为tf.get_variable电话。我们正在检索一个权重张量(如果它还不存在则创建一个)

在卷积神经网络中,权重张量定义了从一层到下一层的映射,但与香草NN不同。卷积意味着当您从一个图层映射到下一个图层时,您正在应用卷积滤镜。此过滤器使用超参数定义,这些参数是输入shape的参数。

有四个参数输入shape,前两个参数与卷积滤波器的大小有关。在这种情况下,我们有一个5x5过滤器。第三个参数定义输入维度,在这种情况下与前一个卷积的输出相同:

kernel = _variable_with_weight_decay('weights',
                                     shape=[5, 5, 3, 64],
                                     stddev=5e-2,
                                     wd=0.0)

第四个参数定义张量的输出维数。

偏见是对用于更好学习的系统的扰动。偏差被添加到卷积的输出。由基本线性代数规则给出,这两个向量应该具有相同的大小,在这种情况下它是64

干杯!