论文辅助笔记:Tempo 之 model.py

 0 导入库

import math
from dataclasses import dataclass, asdict

import torch
import torch.nn as nn

from src.modules.transformer import Block
from src.modules.prompt import Prompt
from src.modules.utils import (
    FlattenHead,
    PoolingHead,
    RevIN,
)


1TEMPOConfig

1.1 构造函数

class TEMPOConfig:
    """
    Configuration of a `TEMPO` model.

    Args:
        num_series: 时间序列的数量, N 
        input_len: 输入时间序列的长度, L
        pred_len: 预测时间序列的长度, Y
        block_size: 块的最大长度(openai gpt2 固定)
        n_layer: Transformer 层的数量
        n_head: 多头注意力机制中的头数量
        n_embd: 嵌入维度的数量
        patch_size: 块的大小,用于将输入时间序列分割成多个小块
        patch_stride: 块的步幅,用于指定块之间的重叠程度
        revin: 是否使用 RevIN(归一化和逆变换)
        affine: 在 RevIN 中是否使用仿射变换
        embd_pdrop:嵌入层的 dropout 率
        resid_pdrop: 残差连接的 dropout 率
        attn_pdrop: 注意力层的 dropout 率
        head_type: 输出层的类型,可以是 FlattenHead 或 PoolingHead
        head_pdtop: 输出层的 dropout 率
        individual: 是否为每个组件使用独立的输出层
        lora: 是否使用 LoRA(低秩近似)
        lora_config: LoRA 的配置
        model_type: 模型类型,默认为 gpt2
        interpret: 是否输出组件以便解释
    """

    num_series: int
    input_len: int
    pred_len: int
    patch_size: int
    patch_stride: int
    block_size: int = None
    n_layer: int = None
    n_head: int = None
    n_embd: int = None
    revin: bool = True
    affine: bool = True
    embd_pdrop: float = 0.1
    resid_pdrop: float = 0.1
    attn_pdrop: float = 0.1
    head_type: str = "flatten"
    head_pdtop: float = 0.1
    individual: bool = False
    lora: bool = False
    lora_config: dict = None
    prompt_config: dict = None
    #Prompt 模块的配置
    model_type: str = "gpt2"
    interpret: bool = False

1.2  todict

TEMPOConfig 类实例转换为一个字典

def todict(self):
    return asdict(self)

'''
asdict 是 Python 的 dataclasses 模块提供的一个函数,用于将数据类实例转换为字典。

这个方法将当前实例的所有属性转换为字典键值对,并返回这个字典。
'''

1.3 __contains__

重载了 Python 的 __contains__ 魔术方法,使得 TEMPOConfig 实例可以像字典一样使用 in 操作符来检查属性是否存在。

def __contains__(self, key):
    return key in self.todict()

1.4 __getitem__

重载了 __getitem__ 魔术方法,使得 TEMPOConfig 实例可以像字典一样通过键来获取属性值

def __getitem__(self, key):
    return getattr(self, key)

1.5__setitem__

重载了 __setitem__ 魔术方法,使得 TEMPOConfig 实例可以像字典一样通过键来设置属性值

def __setitem__(self, key, value):
    setattr(self, key, value)

1.6 update

通过一个字典 config 更新 TEMPOConfig 实例的属性

def update(self, config: dict):
    for k, v in config.items():
        setattr(self, k, v)

2 TEMPO

class TEMPO(nn.Module):
    """
    Notation:
        B: 批次大小
        N: 时间序列的数量
        E: 嵌入维度
        P: 块的数量
        PS: patch的大小
        L: 输入时间序列的长度
        Y: 预测时间序列的长度
    """

    models = ("gpt2",)
    #支持的模型类型列表

    head_types = ("flatten", "pooling")
    #支持的输出层类型

    params = {
        "gpt2": dict(block_size=1024, n_head=12, n_embd=768),
    }
    '''
    模型的参数,例如 "gpt2" 模型的块大小、注意力头数和嵌入维度等
    '''

2.1 __init__

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/591367.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在编程的世界里,我相信每一行代码都是一次对未来的投资

😀前言 突然有感而发也是激励自己互勉 🏠个人主页:尘觉主页 文章目录 在编程的世界里,我相信每一行代码都是一次对未来的投资类似句子编程的本质代码的价值构建可持续的未来结语 在编程的世界里,我相信每一行代码都是一…

【JVM】GC调优(优化JVM参数)、性能调优

GC调优 GC调优的主要目标是避免由垃圾回收引起程序性能下降。 GC调优的核心指标 垃圾回收吞吐量:执行用户代码时间/(执行用户代码时间 GC时间)延迟:GC延迟 业务执行时间内存使用量 GC调优步骤 发现问题:通过监控…

Servlet详解(从xml到注解)

文章目录 概述介绍作用 快速入门Servelt的执行原理执行流程:执行原理 生命周期概述API 服务器启动,立刻加载Servlet对象(理解)实现Servlet方式(三种)实现Servlet接口实现GenericServlet抽象类,只重写service方法实现HttpServlet实现类实现Htt…

python:用 mido 生成 midi文件,用 pygame 播放 mid文件

pip install mido Downloading mido-1.3.2-py3-none-any.whl (54 kB) Downloading packaging-23.2-py3-none-any.whl (53 kB) Installing collected packages: packaging, mido Successfully installed mido-1.3.2 packaging-23.2 mido 官网文档 pip intall pygame pygame…

【AI】ONNX

长期更新,建议收藏关注! 友情链接 Netron 开放神经网络交换(Open Neural Network Exchange)简称ONNX,是微软和Facebook提出用来表示深度学习模型的开放格式。所谓开放就是ONNX定义了一组和环境,平台均无关的标准格式…

内网安全-代理Socks协议路由不出网后渗透通讯CS-MSF控制上线简单总结

我这里只记录原理,具体操作看文章后半段或者这篇文章内网渗透—代理Socks协议、路由不出网、后渗透通讯、CS-MSF控制上线_内网渗透 代理-CSDN博客 注意这里是解决后渗透通讯问题,之后怎么提权,控制后面再说 背景 只有win7有网,其…

分层图像金字塔变压器

文章来源:hierarchical-image-pyramid-transformers 2024 年 2 月 5 日 本文介绍了分层图像金字塔变换器 (HIPT),这是一种新颖的视觉变换器 (ViT) 架构,设计用于分析计算病理学中的十亿像素全幻灯片图像 (WSI)。 HIPT 利用 WSI 固有的层次结…

Git系列:如何为不同的Git仓库设置不同的配置项?

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

毫米波雷达原理(含代码)(含ARS548 4D毫米波雷达数据demo和可视化视频)

毫米波雷达原理 1. 传统毫米波雷达1.1 雷达工作原理1.2 单目标距离估计1.3 单目标速度估计1.4 单目标角度估计1.5 多目标距离估计1.6 多目标速度估计1.7多目标角度估计1.7 总结 3. FMCW雷达数据处理算法4. 毫米波雷达的目标解析(含python代码)5. ARS548 4D毫米波雷达数据demo(含…

企业定制AI智能名片商城小程序:重塑营销场景,引领数字化营销新纪元

在数字化时代的浪潮中,多企业AI智能名片商城小程序以其独特的魅力和创新的功能,为消费者带来了前所未有的购物体验。它不仅是一个汇聚各类商品的购物平台,更是一个充满活力和创造力的社群生态。通过强化社群互动、鼓励用户生成内容以及引入积…

【RAG 博客】Haystack 中的 DiversityRanker 与 LostInMiddleRanker 用来增强 RAG pipelines

Blog:Enhancing RAG Pipelines in Haystack: Introducing DiversityRanker and LostInTheMiddleRanker ⭐⭐⭐⭐ 文章目录 Haystack 是什么1. DiversityRanker2. LostInTheMiddleRanker使用示例 这篇 blog 介绍了什么是 Haystack,以及如何在 Haystack 框…

加州大学欧文分校英语中级语法专项课程03:Tricky English Grammar 学习笔记

Tricky English Grammar Course Certificate Course Intro 本文是学习 https://www.coursera.org/learn/tricky-english-grammar?specializationintermediate-grammar 这门课的学习笔记 文章目录 Tricky English GrammarWeek 01: Nouns, Articles, and QuantifiersLearning …

WAAP动态安全解决方案

随着企业数字化进程不断加速,应用安全面临多重威胁,新型攻击方式层出不穷,常见的攻击形式包括Web应用攻击、DDoS攻击、API攻击、恶意爬虫攻击等。企业正面临严峻的安全防护挑战,需寻找一个可靠、全面的安全解决方案。在此情况下&a…

基于双层优化的电动汽车优化调度研究(附matlab程序)

基于双层优化的电动汽车优化调度研究 0.代码链接 基于双层优化的电动汽车优化调度研究(matlab程序)资源-CSDN文库 1.简述 关键词:双层优化 选址定容 输配协同 时空优化 参考文档:《考虑大规模电动汽车接入电网的双层优化调度策略_胡文平》…

【 书生·浦语大模型实战营】学习笔记(六):Lagent AgentLego 智能体应用搭建

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、…

Redis 实战之对象

Redis 实战 - 对象 对象的类型与编码类型编码和底层实现 字符串对象编码的转换字符串命令的实现 列表对象编码转换列表命令的实现 哈希对象编码转换哈希命令的实现 集合对象集合命令的实现 有序集合对象编码的转换有序集合命令的实现 类型检查与命令多态类型检查的实现多态命令…

嵌入式全栈开发学习笔记---C语言笔试复习大全7(编程题1~8)

目录 1、200~300之间能被3整除的数,5个一行输出; 2、求两个数的最大公约数、最小公倍数; 3、输入十个数,求出平均值; 4、通过编程实现,统计1~n有多少个9; 5、有1、2、3、4个数字&#xff0…

开源AI智能名片与B2B2C商城系统:打造私域流量的会员体系新篇章

在数字化浪潮的推动下,企业如何高效利用私域流量、构建强大的会员体系成为了市场竞争的关键。AI智能名片与B2B2C商城系统的结合,为企业提供了一个全新的解决方案。通过智能名片的个性化推荐和商城系统的精准营销,企业能够更有效地触达和沟通私…

ApiHug 官方站点

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplacehttps://…

计算机等级考试2级(Python)知识点整理

计算机等级考试2级(Python)知识点整理 1.基础知识点(记忆、理解) 第1讲Python概述 01. 源代码 02. 目标代码 03. 编译和解释 04. 程序的基本编写方法 第2讲 Python语言基础(一) 01. 用缩进表示代码…