【发布时间】:2021-04-05 17:45:21
【问题描述】:
我的数据在一列中有氨基酸原始输入。 df['wordstring'] 列中值的最大长度假设为 400。词汇表的总大小为 20,正如您从不同氨基酸的数量中猜测的那样。此外,假设我有 1M 行序列。我知道如何为每个序列创建一个热编码。我想要做的是创建一个具有 20 X 400 X 1M 尺寸的 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 个单热编码字母(单词),除此之外,我需要应用使张量为 400 X 20 的填充。以类似的方式,我必须创建其中的 1M。然后我将获得我的 20 X 400 X 1M 维度张量,以便应用 LSTM、双向 LSTM 等。
一种更数学的方式,将氨基酸向量 A C D .... 的 20 个分量称为 <a1, a2, a3, ... , a19, a20>,并将其放在 z 轴上。其次,由于所有序列的最大长度为 400,假设我们有 <v1, v2, v3,... v399, v400> 向量并将它们放在 y 轴上。最后,由于我们有 1M 不同的序列,我们将在 x 轴上有 <x1, x2, x3, ... , x1M> 长向量。
单词嵌入之间的区别在于我需要一次对每个单词(在我的情况下是每个字母)进行 1 编码。我不需要为每个文档(在我的情况下为序列)提供一个向量表示,这通常适用于常见的 NLP 问题。
【问题讨论】:
-
您能否提供一个可重现的输入和预期输出作为示例?目前还不清楚您希望如何创建编码,一个示例将使其非常清楚。另外,一旦您更新了答案,请在此处发表评论,以便我收到通知并尽早查看:)
标签: python tensorflow multidimensional-array one-hot-encoding word-embedding