小编Jul*_*tor的帖子

广播和连接参差不齐的张量

我有一个参差不齐的尺寸张量[BATCH_SIZE, TIME_STEPS, EMBEDDING_DIM]。我想用来自另一个 shape 张量的数据来扩充最后一个轴[BATCH_SIZE, AUG_DIM]。给定示例的每个时间步都增加了相同的值。

如果张量没有TIME_STEPS因每个示例的变化而参差不齐,我可以简单地重塑第二个张量,tf.repeat然后使用tf.concat

import tensorflow as tf


# create data
# shape: [BATCH_SIZE, TIME_STEPS, EMBEDDING_DIM]
emb = tf.constant([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [0, 0, 0]]])
# shape: [BATCH_SIZE, 1, AUG_DIM]
aug = tf.constant([[[8]], [[9]]])

# concat
aug = tf.repeat(aug, emb.shape[1], axis=1)
emb_aug = tf.concat([emb, aug], axis=-1)
Run Code Online (Sandbox Code Playgroud)

这在参差不齐时不起作用,emb因为它emb.shape[1]是未知的并且因示例而异:

# rag and remove padding
emb = tf.RaggedTensor.from_tensor(emb, padding=(0, 0, 0)) …
Run Code Online (Sandbox Code Playgroud)

python concatenation ragged tensorflow ragged-tensors

5
推荐指数
1
解决办法
321
查看次数