torch.sin( )参数详解

功能介绍:

torch.sin() 是 PyTorch 提供的一个函数,用于计算输入张量中元素的正弦值。它的功能非常简单,就是将输入张量中每个元素的值作为角度,计算其对应的正弦值。

具体来说,torch.sin() 函数接受一个张量作为输入,并返回一个张量,其中每个元素是输入张量中对应元素的正弦值。

代码:

话不多说,我们通过代码来讲解函数的具体用法。(此代码是本人在学习《动手学深度学习》时编写的,故带有沐神的d2l库,如要运行换成matplotlib即可)

import torch
from d2l import torch as d2l
t = torch.arange(0, 628, dtype=torch.float32)
x = torch.sin(0.01*t) #+ torch.normal(0, 0.2, (T,))
d2l.plot(t, [x], 'time', 'x', xlim=[1, 700], figsize=(6, 3))
d2l.plt.show()

 总所周知,π的简略值为3.14,为了展示sin函数的一个周期,故我们这边绘制628个点,即t为一个长度为628,数值为0到627的一个张量。

为了我们传入参数的值在(0,2π)的范围内,我们需要对t中的数值乘以0.01,故传入的参数是一个长度为628(即628个点),数值范围在(0,6.27)之间的张量。

最后,设置x,y轴的数值,名称,x轴量程,画图大小。

让我们看看运行结果:


如有问题,欢迎私信或评论区讨论

### Transformer 模型中的词向量 #### 输入嵌入层的作用 在Transformer模型中,输入序列首先被转换成对应的词向量表示。这些词向量不仅包含了词汇级别的特征信息,还融合了位置编码以保留词语间的相对顺序[^1]。 #### 静态 vs 动态词向量 静态词向量(如Word2Vec或GloVe)是在大规模文本数据集上预先训练得到的固定长度向量,在整个建模过程中保持不变;而动态词向量则是指那些可以在特定任务上下文中进一步微调优化的参数化表达形式。对于后者而言,它们允许更灵活地捕捉不同场景下的细微差别[^3]。 #### 自适应学习能力 值得注意的是,尽管可以采用预训练好的词向量作为初始权重加载至Embedding层,但现代实现通常倾向于让模型自己去习得最适合当前任务需求的新鲜表征方式——即所谓的“端到端”训练策略。这意味着即使不依赖外部资源也能获得高质量的语言理解性能提升。 ```python import torch.nn as nn class PositionalEncoding(nn.Module): def __init__(self, d_model, max_len=5000): super(PositionalEncoding, self).__init__() pe = torch.zeros(max_len, d_model) position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1) div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-torch.log(torch.tensor(10000.0)) / d_model)) pe[:, 0::2] = torch.sin(position * div_term) pe[:, 1::2] = torch.cos(position * div_term) pe = pe.unsqueeze(0).transpose(0, 1) self.register_buffer('pe', pe) def forward(self, x): return x + self.pe[:x.size(0), :] ``` 此代码片段展示了如何构建并应用位置编码于给定张量之上,这是为了使Transformer具备处理变长序列的能力之一[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值