如果我想培训带有绑定权重的自动编码器(编码器和解码器具有相同的权重参数),如何使用tf.layers.conv2d
来正确执行此操作?
我不能简单地在编码器和解码器的相应conv2d
层之间共享变量,因为解码器的权重是编码器的转置。
现在可能几乎没有使用绑重,但我只是很好奇。
答案 0 :(得分:1)
相应地使用tf.nn.conv2d
(和tf.nn.conv2d_transpose
)。它是一个低级函数,它接受kernel
变量作为参数。
kernel = tf.get_variable('kernel', [5, 5, 1, 32])
...
encoder_conv = tf.nn.conv2d(images, kernel, strides=[1, 1, 1, 1], padding='SAME')
...
decoder_conv = tf.nn.conv2d_transpose(images, kernel, strides=[1, 1, 1, 1], padding='SAME')