【问题标题】:How to use tf.layers.conv2d to train a autoencoder with tied weights如何使用 tf.layers.conv2d 训练具有绑定权重的自动编码器
【发布时间】:2018-01-15 01:15:44
【问题描述】:
如果我想训练一个权重绑定的自动编码器(编码器和解码器具有相同的权重参数),如何正确使用tf.layers.conv2d 来做到这一点?
我不能简单地在编码器和解码器的相应conv2d 层之间共享变量,因为解码器的权重是编码器的转置。
也许现在几乎不使用捆绑重量,但我只是好奇。
【问题讨论】:
标签:
tensorflow
conv-neural-network
convolution
recurrent-neural-network
autoencoder
【解决方案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')