【发布时间】:2017-11-20 16:21:50
【问题描述】:
我试图理解Theano implementation of LSTM(目前该链接由于某种原因无法正常工作,但我希望它会尽快恢复)。
在代码中我看到以下部分:
emb = tparams['Wemb'][x.flatten()].reshape([n_timesteps,
n_samples,
options['dim_proj']])
为了使其“独立于上下文”,我用以下方式重写它:
e = W[x.flatten()]].reshape([n1, n2, n3])
x 的维度是 (n1, n2),W 的维度是 (N, n3)。
所以,我的假设是代码可以重写得更短。特别是我们可以写:
e = W[x]
或者,如果我们使用原始符号,它应该是:
emb = tparams['Wemb'][x]
我说的对吗?
为了提供更多上下文,x 是一个二维数组,其中包含表示单词的整数(例如 27 表示“单词编号 27”)。我的符号中的W(或原始符号中的tparams['Wemb'])是一个二维矩阵,其中每一行对应一个单词。所以,它是一个词嵌入矩阵(Word2Vec),将每个词映射到一个实值向量。
【问题讨论】:
-
使用 真实 示例数据编辑您的问题。显示
W.size和W.shape、x.size和x.shape -
也许原文更具描述性“我们从
W检索具有x值的行,并最终得到一个形状为n1,n2,n3的数组”。很好的教程,代码来自哪里。
标签: python numpy theano lstm flatten