我想在张量流中做一些在NumPy中非常容易的事情。我无法弄清楚如何在tf中做到这一点,而且我也怀疑它是否按照我的意思工作。
基本上在NumPy中,我有一个随机初始化列向量的字典。 像
这样的东西F = 6
keys = np.arange(1.0,4.0)
init_dict = {}
for key in keys:
init_dict[key] = np.random.random(size=(F,1))
我有一个包含一定数量键的行向量,因此我构建了一个矩阵,其中每列是dict中包含的列向量之一。 它看起来像这样
inp = np.hstack((keys,keys)).reshape(1,-1)
mat = np.repeat(inp, F, axis=0)
for i in range(mat.shape[1]):
mat[:,i] = init_dict[mat[0,i]][:,0]
这个mat
然后进入我的模型。
我们的想法是训练存储在init_dict
中的随机初始化列向量。
我想在TF中做同样的事情。
如何在TF中构建类似于mat
的东西?
基本上mat
将是tf.Variable
,其中每列引用另一个tf.Variable
(dict中的那个)...这对我来说有点模糊,特别是在backprop,因为我希望mat
列的所有渐变都与存储在dict中的相应向量相同。
这可能吗?
答案 0 :(得分:1)
使用tf.stack
。例如:
import tensorflow as tf
session = tf.InteractiveSession()
d = {
'foo': tf.Variable([1, 2, 3]),
'bar': tf.Variable([4, 5, 6]),
'baz': tf.Variable([7, 8, 9]),
}
session.run(tf.global_variables_initializer())
print(d['foo'].eval())
# >>> [1 2 3]
mat = tf.stack(list(d.values()), axis=1)
print(mat.eval())
# >>> [[1 4 7]
# [2 5 8]
# [3 6 9]]