我有一个列中有氨基酸原始输入的数据。假设df['wordstring']列中的值的最大长度是400。根据不同氨基酸的数量,词汇表的总大小是20。此外,假设我有1M行序列。我知道如何为每个序列创建一个热编码。我想做的是创建一个尺寸为20X400X1M的3D矩阵(张量)。有没有办法用TensorFlow做到这一点?Pytorch也可以作为替代。

例如:假设s1 = df['wordstring'][0] (= 'a s g y t f t s y g i s w v r q ... ')和len(s1) = 160。因此,我必须获得160个单热编码的字母(单词),在此基础上,我需要应用填充,使张量为400X20。然后,我将获得我的20X400X1M维张量,以便应用LSTM、双向LSTM等。
一种更数学的方式,说有20个氨基酸向量的分量,作为<a1, a2, a3, ... , a19, a20>,放在z轴上。其次,由于所有序列的最大长度为400,因此假设我们有<v1, v2, v3,... v399, v400>向量并将它们放在y轴上。最后,因为我们有1M个不同的序列,所以我们将在x轴上有<x1, x2, x3, ... , x1M>长向量。
单词嵌入之间的不同之处在于,我需要一次编码一个单词(在我的例子中,每个字母)。对于常见的NLP问题,我不需要每个文档的向量表示(在我的示例序列中)。
发布于 2020-12-29 17:47:58
您要做的是使用一个嵌入层,因为它是在NLP模型中使用的。这意味着:
您可以自己完成步骤1-2,也可以使用tf.keras.preprocessing.text中提供的一些TensorFlow实用程序。您可能会在Word embeddings tutorial中找到一些提示。
它在PyTorch中也可以很好地完成。在这种情况下,您将使用nn.Embedding layer。各个实用程序函数位于一个独立的包torchtext中。
https://stackoverflow.com/questions/65486336
复制相似问题