我通过使用重用属性在两个层之间共享权重,但我发现它实际上共享变量的初始值。优化程序会更新权重,但该更新不会反映在其他图层中。
with tf.variable_scope('conv1'):
layer1 = conv2d(x,output_features=out_features,kernel_size=kernel_size,padding=padding,strides=strides)
with tf.variable_scope('conv1', reuse=True):
layer1 = conv2d(x_shaped,output_features=out_features,kernel_size=kernel_size,padding=padding,strides=strides)
如何在两个图层上反映更新?
答案 0 :(得分:1)
给conv2d
一个名字。默认情况下,代码会找出一个名称,以便它不会重叠,这会导致创建2个不同的变量。
应该有一组变量。如果您看到两个,那么它们就不会被共享。
除此之外,您正确使用variable_scope。如果你想将它包装在一个你可以重用的函数中,还有tf.AUTO_REUSE
。