经典的lstm(Embedding)的例子

本文通过一个具体的示例展示了如何使用PyTorch中的嵌入层(embedding layer),包括初始化、权重操作以及梯度计算等过程。文章还介绍了如何通过unsqueeze方法调整张量维度以实现特定的矩阵运算。

 

 

from torch.autograd import Variable as V
import torch as t
from torch import nn

n, d, m = 3, 5, 7
embedding = nn.Embedding(n, d, max_norm=True)
W = t.randn((m, d), requires_grad=True)
idx = t.tensor([1, 2])
a = embedding.weight.clone() @ W.t()  # weight must be cloned for this to be differentiable
b = embedding(idx) @ W.t()  # modifies weight in-place
out = (a.unsqueeze(0) + b.unsqueeze(1))
print(a.unsqueeze(0).shape, b.unsqueeze(1).shape)
# with t.no_grad():
print(a.unsqueeze(0), "\n", b.unsqueeze(1), "\n", (a.unsqueeze(0) + b.unsqueeze(1)).shape)
print( (a.unsqueeze(0) + b.unsqueeze(1)))
loss = out.sigmoid().prod()
loss.backward()
/home/wangbin/anaconda3/envs/deep_learning/bin/python3.7 /home/wangbin/anaconda3/envs/deep_learning/project/main.py
torch.Size([1, 3, 7]) torch.Size([2, 1, 7])
tensor([[[ 1.0560, -0.3363,  1.9043, -0.8517,  0.0666, -0.1867, -0.1422],
         [-1.0370, -0.8827,  0.1464, -0.4847, -0.0349, -0.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的探索之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值