在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)
答案 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
干杯!