当前位置: 首页 > news >正文

机器学习/pytorch笔记:time2vec

1 概念部分

对于给定的标量时间概念 t,Time2Vec 的表示 t2v(t)是一个大小为 k+1的向量,定义如下:

  • 其中,t2v(t)[i]是 t2v(t)的第 i 个元素,F是一个周期性激活函数,ω和 ϕ是可学习的参数。

  • 以下是个人理解:
    • t是时间序列中的一个时间点,而不是时间序列的数值。
    • 具体来说,t 代表时间序列中的一个特定时刻,例如某一天、某一小时或某一秒等。Time2Vec 的目标是将每一个时间点 t 转换为一个具有特定特征的向量表示,以便更好地捕捉时间相关的特性和模式。

2 pytorch实现

2.1 函数t2v


def t2v(tau, f, out_features, w, b, w0, b0, arg=None):if arg:v1 = f(torch.matmul(tau, w) + b, arg)else:v1 = f(torch.matmul(tau, w) + b)v2 = torch.matmul(tau, w0) + b0return torch.cat([v1, v2], 1)
  • t2v 负责将输入的时间 tau 通过两个不同的线性变换和激活函数转换成特征向量,并将这两个特征向量连接起来
    • tau 是输入的时间张量。
    • f 是激活函数(例如 torch.sin 或 torch.cos)。
    • out_features 是输出特征的维度。
    • w 和 b 是用于第一个变换的权重和偏置。
    • w0 和 b0 是用于第二个变换的权重和偏置。

2.2 SineActivation

class SineActivation(nn.Module):def __init__(self, in_features, out_features):super(SineActivation, self).__init__()self.out_features = out_featuresself.w0 = nn.parameter.Parameter(torch.randn(in_features, 1))self.b0 = nn.parameter.Parameter(torch.randn(in_features, 1))self.w = nn.parameter.Parameter(torch.randn(in_features, out_features - 1))self.b = nn.parameter.Parameter(torch.randn(in_features, out_features - 1))self.f = torch.sindef forward(self, tau):return t2v(tau, self.f, self.out_features, self.w, self.b, self.w0, self.b0)
  • 实现了使用正弦函数作为激活函数的时间嵌入
  • cos同理,把torch.sin换成torch.cos即可
  • 输入特征的维度(in_features)取决于提供的时间特征的数量
    • 如果你只有一个时间特征(例如,仅一天中的时间),那么输入特征的维度是 1。
    • 如果你有两个时间特征(例如,一天中的时间和一周中的某一天),那么输入特征的维度是 2。
    • 依此类推,输入特征的维度是你提供的时间特征的数量。

http://www.lryc.cn/news/389187.html

相关文章:

  • 降低开关电源噪声的设计总结
  • rust嵌入式开发2024
  • 字符串
  • mysql8 锁表与解锁
  • 第2篇 区块链的历史和发展:从比特币到以太坊
  • 从理论到实践的指南:企业如何建立有效的EHS管理体系?
  • 内网和外网的区别及应用
  • 电驱失效类型和风险分析,如何用精益思维提升电驱可靠性?
  • 自动扫描范围在减少剂量多相CT肝脏成像中的应用:基于CNN和高斯模型| 文献速递-深度学习自动化疾病检查
  • 【机器学习】基于层次的聚类方法:理论与实践
  • C# 验证PDF数字签名的有效性
  • 2小时动手学习扩散模型(pytorch版)【入门版】【代码讲解】
  • Centos7网络配置(设置固定ip)
  • 英伟达被“压制”的25年
  • windows安装Gitblit还是Bonobo Git Server
  • 仪器校准的概念与定义,计量校准是什么?
  • Vue3+Pinia
  • label studio数据标注平台的自动化标注使用
  • 高并发场景下的热点key问题探析与应对策略
  • 学习一下C++中的枚举的定义
  • 开发一套java语言的智能导诊需要什么技术?java+ springboot+ mysql+ IDEA互联网智能3D导诊系统源码
  • C++| STL之string
  • [数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式4599张2类别
  • JAVA实现麦克风说话同声传译
  • LabVIEW与PLC通讯方式及比较
  • 2024/6/30 英语每日一段
  • Postman接口测试工具的原理及应用详解(五)
  • 208.贪心算法:买卖股票的最佳时机||(力扣)
  • 【论文阅读】伸缩密度比估计:Telescoping Density-Ratio Estimation
  • MongoDB数据库 MQL (MongoDB Query Language)语句大全