您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如果我们使用索引矩阵,我们是否需要在Theano中使用flatten和reshape?

5b51 2022/1/14 8:21:48 python 字数 2598 阅读 508 来源 www.jb51.cc/python

我试着理解Theano implementation of LSTM(目前链接无论什么原因都不起作用,但我希望很快就会回来).在代码中我看到以下部分:emb = tparams['Wemb'][x.flatten()].reshape([n_timesteps, n_sa

概述

我试着理解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是包含表示单词的整数的2D数组(例如27表示“单词数字27”).原始符号中的符号(或tparams [‘Wemb’])中的W是2D矩阵,其中每行对应一个单词.因此,它是一个字嵌入矩阵(Word2Vec),将每个字映射到实值向量.

W [x.flatten()]]给出由x的值定义的W行(即单词).因此结果是shape =(n1 * n2,n3).让我们称之为“单词列表”(不是python列表,而只是一个常见的语音列表).
然后,重塑为您提供所需的大小,其中单词列表在n1个单词的n1页中被提供.

你用W [x]实现了相同的效果,因为x的每个n2行都给你一个结果的n1页.

这是一个示例程序,显示两个表达式是等效的:

import numpy as np

N = 4
n3 = 5
W = np.arange(n3*N).reshape((N,n3))

print("W = \n",W)

n1 = 2
n2 = 3
x = np.random.randint(low=0,high=N,size=(n1,n2))

print("\nx = \n",x)

print("\ne = \n",W[x.flatten()].reshape([n1,n3]))

print("\nalternativeE = \n",W[x])

总结

以上是编程之家为你收集整理的如果我们使用索引矩阵,我们是否需要在Theano中使用flatten和reshape?全部内容,希望文章能够帮你解决如果我们使用索引矩阵,我们是否需要在Theano中使用flatten和reshape?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶