首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Pytorch中,我们可以有超过一维的输入(例如单词嵌入)吗?

在Pytorch中,我们可以有超过一维的输入(例如单词嵌入)吗?
EN

Stack Overflow用户
提问于 2021-05-05 22:14:11
回答 1查看 20关注 0票数 0

假设我有一些文本,我想将它们分为三组food, sports, science。如果我有一个句子I dont like to each mushrooms,我们可以使用单词嵌入(比如说100维)来为这个特定的句子创建一个6x100矩阵。

通常,在训练神经网络时,我们的数据是维数为n_obs x m_features的二维数组

如果我想训练一个词嵌入句子的神经网络(我使用的是Pytorch),那么我们的输入是3D n_obs x (m_sentences x k_words)

e.g

代码语言:javascript
运行
复制
#Say word-embedding is 3-dimensions
I = [1,2,3]
dont = [4,5,6]
eat = [7,8,9]
mushrooms = [10,11,12]

"I dont eat mushrooms" = [I,dont,eat,mushrooms] #First observation

当我们有N>2维度时,最好的方法是做一些池化,例如均值,或者我们可以使用实际的2D特征作为输入吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-05 22:40:43

从技术上讲,输入将是1D,但这并不重要。

神经网络的内部架构将负责识别不同的单词。例如,您可以有一个卷积,其步长等于嵌入大小。

您可以将2D输入展平为1D,它将工作得很好。这是您通常使用word嵌入的方法。

代码语言:javascript
运行
复制
I = [1,2,3]
dont = [4,5,6]
eat = [7,8,9]
mushrooms = [10,11,12]

input = np.array([I,dont,eat,mushrooms]).flatten()

神经网络的输入必须始终具有相同的大小,但由于句子的大小不同,您可能必须将句子的最大长度限制为设定的单词长度,并在较短的句子的末尾添加填充:

代码语言:javascript
运行
复制
I = [1,2,3]
Am = [4,5,6]
short = [7,8,9]
paddingword = [1,1,1]

input = np.array([I,Am,eat,short, paddingword]).flatten()

您可能还想看看doc2vec from gensim,它是一种对文本进行嵌入的简单方法,然后很容易用于文本分类问题。

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

https://stackoverflow.com/questions/67403070

复制
相关文章

相似问题

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