给出一批具有单个形状X
的张量x[t_i][j]
,其中t_i
是批处理元素i
的序列长度,我想使用padded_batch
将张量填充到t_max
的长度,使得x[t_i <= t < t_max] = x[t_i]
。
不使用padded_batch
,我会简单地
batch_x = ... #list of tensors to padded_batch
t_max = ... #longest sequence length of batch
new_batch = []
for x in batch_x:
row = tf.expand_dims(x[-1],axis=0)
rows = tf.tile(row,[t_max-x.shape[0],1])
padded_x = tf.concat([x,rows],axis=0]
new_batch.append(padded_x)
return tf.stack(new_batch,axis=0)
使用padded_batch
的增加似乎并没有足够的控制力。
我唯一能想到的就是将每个特征张量分开用于batch_padding。然后将batched_papped功能串联起来。
编辑:
我意识到这相当于np.pad(x,(0,pad_len),'edge')