如何在Tensorflow中重用一些变量的参数

时间:2017-03-14 21:43:57

标签: tensorflow

我知道如何在两个不同的操作中重用完整变量Tensorflow,如文档中所述:https://www.tensorflow.org/programmers_guide/variable_scope

但是,是否可以以更复杂的方式重用参数?特别是,是否可以指定两个不同形状的变量共用一些参数?

我想要做的一个小例子:我想拥有一个包含25个参数的模型。我想在三个变量X,Y和Z中使用这些参数,以便X使用5x5张量中的所有参数: X = w11,w12,...,w15 w21,w22,...,w25 ... w51,w52,...,w55

而Y在3x3张量中使用9个参数,例如X的中间3x3块。这是: Y = w22,w23,w24 w32,w33,w34 w42,w43,w44

虽然Z使用与Y相同的九个权重,也使用3x3张量,但相对于Y进行转置,即: Z = w22,w32,w42 w23,w33,w43 w24,w34,w44

如果无法做到这一点,Tensorflow开发社区是否有计划支持此功能?

我在github https://github.com/tensorflow/tensorflow/issues/8368中将此问题作为功能请求发布,但在此处提到了帖子。此外,这个问题与Reusing layer weights in Tensorflow有关,但这是一个更普遍的问题。

1 个答案:

答案 0 :(得分:1)

此帖子假设您使用的是tensorflow 1.0

# 5x5 kernel
X = tf.random_normal(shape=(5,5))
Y = tf.identity(X[2:4,2:4]) #this creates a copy
Z = tf.transpose(Y)

# do whatever you want with X, Y, and Z below