首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过tensorflow的一次热编码将氨基酸原始数据转换为三维张量

如何通过tensorflow的一次热编码将氨基酸原始数据转换为三维张量
EN

Stack Overflow用户
提问于 2020-12-29 09:55:12
回答 1查看 152关注 0票数 0

我有一个列中有氨基酸原始输入的数据。假设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问题,我不需要每个文档的向量表示(在我的示例序列中)。

EN

Stack Overflow用户

发布于 2020-12-29 17:47:58

您要做的是使用一个嵌入层,因为它是在NLP模型中使用的。这意味着:

  1. 创建将符号映射为唯一ID的词汇表。
  2. 使用ID对输入进行编码。
  3. 创建一个embedding layer in TensofFlow,为每个符号分配一个可训练向量。它会给你一个张量,你可以在任何NN中进一步使用。

您可以自己完成步骤1-2,也可以使用tf.keras.preprocessing.text中提供的一些TensorFlow实用程序。您可能会在Word embeddings tutorial中找到一些提示。

它在PyTorch中也可以很好地完成。在这种情况下,您将使用nn.Embedding layer。各个实用程序函数位于一个独立的包torchtext中。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65486336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档