作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近读了一篇 paper关于嵌入。
在等式。 (3)、f
是 4096X1
向量。作者尝试将向量压缩为theta
(20X1
向量)通过使用嵌入矩阵 E
.
方程很简单theta = E*f
我想知道它是否可以使用pytorch
为了达到这个目标,那么在训练中,E
可以自动学习。
如何完成剩下的?非常感谢。
演示代码如下:
import torch
from torch import nn
f = torch.randn(4096,1)
最佳答案
假设您的输入向量是 one-hot 即使用“嵌入层”,您可以直接使用 embedding layer来自以上以及其他一些事情的火炬。 nn.Embeddings
将 one-hot 向量的非零索引作为长张量的输入。例如:如果特征向量是
f = [[0,0,1], [1,0,0]]
nn.Embeddings
将会
nn.Parameter
的一个实例它将被注册为参数,并在您调用 Adam 或任何其他优化器时进行优化。
class Embedding(nn.Module):
def __init__(self, input_dim, embedding_dim):
super().__init__()
self.param = torch.nn.Parameter(torch.randn(input_dim, embedding_dim))
def forward(self, x):
return torch.mm(x, self.param)
self.embedding = nn.Linear(4096, 20, bias=False)
# change initial weights to normal[0,1] or whatever is required
embedding.weight.data = torch.randn_like(embedding.weight)
关于deep-learning - 如何在pytorch中实现低维嵌入层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55427386/
我是一名优秀的程序员,十分优秀!