gpt4 book ai didi

python - 将行添加到一批 TensorFlow 张量

转载 作者:太空宇宙 更新时间:2023-11-04 04:47:16 25 4
gpt4 key购买 nike

我有 3 阶张量 [batch_size, num_rows, num_cols]),我想向其附加适当大小的行,从而得到尺寸为 [batch_size, num_rows + 1, num_cols] 的 3 阶张量

例如,如果我有以下一批 2x2 矩阵

batch = [ [[2, 2],
[2, 2]],
[[3, 3],
[3, 3]],
[[4, 4],
[4, 4]] ]

和一个新行 v = [1, 1] 我想追加,那么期望的结果是

new_batch = [ [[2, 2],
[2, 2],
[1, 1]],
[[3, 3],
[3, 3],
[1, 1]],
[[4, 4],
[4, 4],
[1, 1]] ]

在 TensorFlow 中是否有一种简单的方法可以做到这一点?这是我尝试过的:

W, b, c0, q0 = params
c = tf.concat([context, c0], axis=1)
q_p = tf.tanh(tf.matmul(W, question) + b)
q = tf.concat([q_p, q0], axis=1)
q_mask = tf.concat([question_mask, 1], axis=1)

为了澄清条款,

  1. context 具有维度 [batch_size, context_len, hidden_​​size]
  2. q_p 具有维度 [batch_size, question_len, hidden_​​size]
  3. question_mask 具有维度 [batch_size, question_len]
  4. c0q0 都有维度 [hidden_​​size]

我想做什么

  1. 将向量 c0 添加到 context,生成维度为 [batch_size, context_len + 1, hidden_​​size]
  2. 的张量
  3. 将向量 q0 添加到 q_p,得到维度为 [batch_size, question_len + 1, hidden_​​size]
  4. 的张量
  5. 将 1 添加到 question_mask,得到维度为 [batch_size, question_len + 1]
  6. 的张量

感谢您的帮助。

最佳答案

您可以使用 tf.map_fn做这个。

batch = [ [[2, 2],
[2, 2]],
[[3, 3],
[3, 3]],
[[4, 4],
[4, 4]] ]

row_to_add = [1,1]

t = tf.convert_to_tensor(batch, dtype=np.float32)
appended_t = tf.map_fn(lambda x: tf.concat((x, [row_to_add]), axis=0), t)

输出

appended_t.eval(session=tf.Session())

array([[[ 2., 2.],
[ 2., 2.],
[ 1., 1.]],

[[ 3., 3.],
[ 3., 3.],
[ 1., 1.]],

[[ 4., 4.],
[ 4., 4.],
[ 1., 1.]]], dtype=float32)

关于python - 将行添加到一批 TensorFlow 张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49243416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com