重塑两层之间的张量

时间:2017-08-30 14:11:39

标签: tensorflow reshape tensor

我有一个神经网络,我在其中构建了自己的图层,并给出了A = [10, 5]形状的结果。

我想将结果提供给另一个采用形状B = [10, 9, 5]输入的图层。

输入B基于之前的结果A,例如,从A中选择9个不同的行10次,创建一个形状为{{1}的新张量}。

有办法吗?

2 个答案:

答案 0 :(得分:0)

for循环将执行:

a = tf.constant([[1, 2, 7], [3, 4, 8], [5, 6, 9]])

tensor_list = []
pick_times = 3
for i in range(pick_times):
    pick_rows = [j  for j in range(pick_times) if i != j]
    tensor_list.append(tf.gather(a, pick_rows))

concated_tensor = tf.concat(tensor_list, 0)
result = tf.reshape(concated_tensor, [3, 2, 3])

答案 1 :(得分:0)

将张量A(图层的输出)转换为numpy数组:

a=sess.run(A.eval())

为了示例,我将使用:

a=np.random.uniform(0,5,[10])

然后:

#choose wich element will be left out
out = np.random.randint(5, size=[10])

#array of different output layers without one random element
b=[]
for i in range(10):
  b.append(np.delete(a,out[i]))

#Stack them all together
B = tf.stack(b[:])