tensorflow中embedding计算原理

# vocab_size:词表数量
# embedding_dim: 词嵌入后维度
tf.keras.layers.Embedding(vocab_size, embedding_dim)

假设有一句话,I love you

vocab_size:我们传入的词表大小是1000,

embedding_dim:embedding后的维度256。

先将 I love you 这三个词对应的索引(1行3列)传入Embedding层

那么embedding会先将这1行三列的索引转换成One-hot编码,

因为此表有1000个词,那么这句I love you也就转成(3行1000列)的词向量。

embedding层会生成根据你传入的vocab_size词表大小和embedding_dim维度大小生成一个1000行256列的矩阵。

用One-hot编码的3行1000列矩阵乘embedding层生成的1000行256列的矩阵,最后embedding输出的就是3行256列的词嵌入后的输出。

那么我们每次输入不仅仅是一句话,大多数情况下输入的是一个批次,

例如batch_size=64,也就是每批次有64句话输入

那么假设输入的维度是64行15列(64,15)

那么经过One-hot编码得到的矩阵就是64个15行1000列的矩阵(64,15,1000)

再与embedding生成的(64,1000,256)的矩阵相乘。

输出的就是词嵌入后的结果(64,15,256)

假设输入维度是(64, 15),那么也就是代表一句话有15个单词,一共有64句话作为一批次输入。

我们输入经过embedding层之后得到这一批次的词向量是(64,15,256),含义就是GRU分成15个时刻,每个时刻64行256列的输入。

我们假设GRU中间隐层有1024个神经元, 那么在输入与隐层之间的矩阵就是256*1024的W矩阵

输入的每一个时刻是(64,256)的输入与W矩阵相乘后得到每一个时刻的输出是64*1024的矩阵。

因为是15个时刻,所以GRU总的输出就是15个(64, 1024)的矩阵,在tf里用三维向量表示(64,15, 1024)

 每一时刻的输入就是一个单词,一句话拆分成多个时刻的输入。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值