如何在初始模型中区分变量?

时间:2017-03-07 22:03:10

标签: tensorflow

我阅读了Inception模型的代码,但我对变量共享感到困惑。

line 116和第117行:

        # mixed: 35 x 35 x 256.
    with tf.variable_scope('mixed_35x35x256a'):
      with tf.variable_scope('branch1x1'):
        branch1x1 = ops.conv2d(net, 64, [1, 1])
      with tf.variable_scope('branch5x5'):
        branch5x5 = ops.conv2d(net, 48, [1, 1])        //line 116
        branch5x5 = ops.conv2d(branch5x5, 64, [5, 5])  //line 117

这两个图层的权重变量是否具有相同 variable_scope相同名称weights?唯一可能的情况是变量是共享的,但很明显,这两个变量有不同的形状(1x1对5x5)并且是不可修复的?有人请解释一下吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

ops.conv2d()是一个TensorFlow Slim便利函数,用于创建二维卷积层,包括权重和偏差变量。虽然函数支持变量共享,但默认为不共享 - 而是在每次调用时创建新的变量范围 - 您必须通过optional scope and reuse arguments以明确启用共享。因此,对ops.conv2d()的两次调用会创建单独的权重和偏差变量。