如何在Tensorflow中共享过滤器权重

时间:2018-10-27 02:23:17

标签: tensorflow deep-learning

为简单起见,假设图像只有1个通道,我们有一个大小为[2,2]的滤波器,可以写成W = [[a,b],[c,d]],我想使用这组参数可以进行2次卷积,首先只是使用W本身:

输出= tf.nn.conv2d(输入,W)

第二次卷积,我想使用过滤器W_2 = [[d,c],[b,a]],它基本上是W的某种“转置”。它需要与W共享参数。我应该怎么写张量流中的这个吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以反转权重:

import tensorflow as tf

w = tf.Variable([[1, 2.], [3, 4]])
w_transposed = w[::-1, ::-1]
grad = tf.gradients(w_transposed, w)[0]

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print('Values')
    print(w.eval())
    print(w_transposed.eval())
    print('Gradient')
    print(grad.eval())

打印

Values
[[1. 2.]
 [3. 4.]]
[[4. 3.]
 [2. 1.]]
Gradient
[[1. 1.]
 [1. 1.]]