tf.keras中的Pad向量对于LSTM

问题描述 投票:1回答:1

Keras具有pad sequences的预处理工具,但它假设序列是整数。

我的序列是向量(我自己的嵌入,我不想使用Keras嵌入),有什么方法可以填充它们以用于LSTM?

在Python中可以使序列相等,但是Keras中的padding方法为masking考虑的LSTM等层提供了额外的元信息。

keras lstm padding tf.keras word-embedding
1个回答
0
投票

这是可能用零填充不同长度的浮点数组

要屏蔽零点,您可以使用屏蔽层(否则将其删除)

您的嵌入内容存储在列表中。在示例中,我使用了4个不同长度的样本。相对嵌入存储在此列表中([1,300],[2,300],[3,300],[4,300])

# recreate your embed
emb = []
for i in range(1,5):
    emb.append(np.random.uniform(0,1, (i,300)))

# custom padding function
def pad(x, max_len):
    new_x = np.zeros((max_len,x.shape[-1]))
    new_x[:len(x),:] = x # post padding
    return new_x

# pad own embeddings
emb = np.stack(list(map(lambda x: pad(x, max_len=100), emb)))

emb_model = tf.keras.Sequential()
emb_model.add(tf.keras.layers.Masking(mask_value=0., input_shape=(100, 300)))
emb_model.add(tf.keras.layers.LSTM(32))

emb_model(emb) 
© www.soinside.com 2019 - 2024. All rights reserved.