我阅读了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)并且是不可修复的?有人请解释一下吗?
谢谢,
答案 0 :(得分:0)
ops.conv2d()
是一个TensorFlow Slim便利函数,用于创建二维卷积层,包括权重和偏差变量。虽然函数支持变量共享,但默认为不共享 - 而是在每次调用时创建新的变量范围 - 您必须通过optional scope
and reuse
arguments以明确启用共享。因此,对ops.conv2d()
的两次调用会创建单独的权重和偏差变量。