我有一个参差不齐的尺寸张量[BATCH_SIZE, TIME_STEPS, EMBEDDING_DIM]
。我想用另一个形状张量的数据来增加最后一个轴[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)
这在衣衫褴褛时不起作用,emb
因为emb.shape[1]
它是未知的并且因示例而异:
# rag and remove padding
emb = tf.RaggedTensor.from_tensor(emb, padding=(0, 0, 0))
# reshape for augmentation - this doesn't work
aug = tf.repeat(aug, emb.shape[1], axis=1)
ValueError:尝试将具有不受支持的类型 (<class 'NoneType'>) 的值 (None) 转换为张量。
目标是创建一个参差不齐的张量emb_aug
,如下所示:
<tf.RaggedTensor [[[1, 2, 3, 8], [4, 5, 6, 8]], [[1, 2, 3 ,9]]]>
有任何想法吗?