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

腾讯公司做的购物网站seo课

腾讯公司做的购物网站,seo课,四川省人民政府官网投诉电话,WordPress360收录查询源码:https://github.com/Time-MoE/Time-MoE 这段代码实现了两个用于时间序列数据处理的窗口化数据集类,主要用于将长序列切割成固定长度的子序列,为模型训练提供合适的输入格式。 1. 核心类:TimeMoEWindowDataset 1.1 功能概述…

源码:https://github.com/Time-MoE/Time-MoE

这段代码实现了两个用于时间序列数据处理的窗口化数据集类,主要用于将长序列切割成固定长度的子序列,为模型训练提供合适的输入格式。


1. 核心类:TimeMoEWindowDataset

1.1 功能概述

将长时间序列转换为固定长度的非重叠滑动窗口,每个窗口包含:

  • 输入序列input_ids):长度为context_length
  • 标签序列labels):长度为context_length + prediction_length,与输入序列错位 1 个时间步
  • 损失掩码loss_masks):标记哪些位置需要计算损失

1.2 关键参数

  • context_length:输入序列长度(历史信息)
  • prediction_length:预测序列长度(未来信息,默认为 0)
  • stride:窗口滑动步长(默认为窗口大小,即非重叠)

1.3 初始化逻辑

def __init__(self, dataset, context_length, prediction_length=0, stride=None):self.dataset = datasetself.context_length = context_lengthself.prediction_length = prediction_lengthself.window_size = context_length + prediction_lengthself.stride = stride or self.window_size  # 默认非重叠# 构建子序列索引列表self.sub_seq_indexes = []for seq_idx in range(len(dataset)):n_points = dataset.get_sequence_length_by_idx(seq_idx)if n_points < 2:continue# 添加初始窗口self.sub_seq_indexes.append((seq_idx, 0))# 添加后续窗口(按stride滑动)for offset in range(self.stride, n_points - self.window_size - 1 + 1, self.stride):self.sub_seq_indexes.append((seq_idx, offset))

1.4数据获取逻辑

def __getitem__(self, seq_idx):seq_i, offset_i = self.sub_seq_indexes[seq_idx]# 提取窗口数据(包含额外1个点用于错位)seq = self.dataset[seq_i][offset_i: offset_i + self.window_size + 1]seq = np.array(seq, dtype=np.float32)# 创建损失掩码(标记有效位置)loss_mask = np.ones(len(seq) - 1, dtype=np.int32)# 处理序列长度不足的情况(填充0)n_pad = self.window_size + 1 - len(seq)if n_pad > 0:seq = np.pad(seq, (0, n_pad), 'constant', constant_values=0)loss_mask = np.pad(loss_mask, (0, n_pad), 'constant', constant_values=0)return {'input_ids': seq[:-1],      # 输入序列'labels': seq[1:],         # 标签序列(错位1步)'loss_masks': loss_mask    # 损失掩码(忽略填充位置)}

2.增强类:UniversalTimeMoEWindowDataset

2.1 功能概述

实现了一种打包技术(pack technique),将多个短序列合并成一个固定长度的窗口,提高数据利用率和训练效率。

2.2 关键参数

  • shuffle:是否随机打乱序列顺序(默认为 False)
  • 其他参数与TimeMoEWindowDataset类似

2.3 初始化逻辑

def __init__(self, dataset, context_length, prediction_length=0, shuffle=False):self.dataset = datasetself.window_size = context_length + prediction_lengthself.window_info_list = []  # 存储窗口信息(每个窗口包含多个子序列片段)cur_window_info = []        # 当前窗口的子序列片段num_cur_remaining_points = self.window_size  # 当前窗口剩余可用长度# 遍历所有序列(可随机打乱)iterator = range(len(dataset))if shuffle:iterator = list(iterator)random.shuffle(iterator)for seq_idx in iterator:seq_len = dataset.get_sequence_length_by_idx(seq_idx)remaining_seq_len = seq_len# 将当前序列切割成多个片段,填充到窗口中while remaining_seq_len > 0:if remaining_seq_len < num_cur_remaining_points:# 当前序列剩余部分不足以填满窗口,全部加入cur_window_info.append((seq_idx, seq_len - remaining_seq_len, remaining_seq_len))num_cur_remaining_points -= remaining_seq_lenremaining_seq_len = 0else:# 当前序列剩余部分可以填满窗口,截取部分加入cur_window_info.append((seq_idx, seq_len - remaining_seq_len, num_cur_remaining_points))remaining_seq_len -= num_cur_remaining_points# 当前窗口已满,添加到结果列表并重置self.window_info_list.append(cur_window_info)num_cur_remaining_points = self.window_sizecur_window_info = []

2.4 数据获取逻辑

def __getitem__(self, window_idx):window_info = self.window_info_list[window_idx]seq = []# 从多个子序列片段构建完整窗口for seq_idx, start_idx, offset in window_info:part_seq = dataset[seq_idx][start_idx: start_idx + offset]seq.append(part_seq)# 合并所有片段if len(seq) == 1:seq = np.array(seq[0], dtype=np.float32)else:seq = np.concatenate(seq, axis=0, dtype=np.float32)return {'input_ids': seq[:-1],  # 输入序列'labels': seq[1:],     # 标签序列(错位1步)}

3.对比分析

  1. TimeMoEWindowDataset

    • 适用于长序列数据
    • 适合需要严格控制窗口独立性的场景
    • stride < window_size时支持重叠窗口,用于增强数据多样性
  2. UniversalTimeMoEWindowDataset

    • 适用于大量短序列数据
    • 通过打包技术减少填充,提高训练效率
    • 适合自回归模型(如 GPT 类模型),允许不同序列之间的信息流动

性能与内存权衡:

  • TimeMoEWindowDataset

    • 预计算所有窗口索引,内存开销较高(尤其是长序列)
    • 数据访问速度快(直接索引)
  • UniversalTimeMoEWindowDataset

    • 动态构建窗口,内存开销低
    • 数据访问时需要拼接多个片段,计算开销略高

4.总结

这两个类通过不同策略解决了时间序列数据的窗口化问题:

  • TimeMoEWindowDataset:提供简单直观的滑动窗口实现,支持灵活的重叠策略
  • UniversalTimeMoEWindowDataset:通过序列打包技术优化短序列处理,提高训练效率

两者共同构成了一个完整的时间序列数据预处理工具链,为后续模型训练提供了标准化的输入格式。

http://www.dtcms.com/wzjs/57749.html

相关文章:

  • 项目经理证怎么考取昆明seo排名外包
  • 深圳3d网站建设电商网站建设开发
  • 网站建设外包名词解释滕州网站建设优化
  • 天津市武清区网站建设长沙网站优化
  • 服务周到的上海网站建设公google服务框架
  • 网站开发与维护课程设计免费seo网站的工具
  • 自己做的网站别人怎么访问百度com百度一下你
  • 加盟网大全外贸seo优化
  • 什么网站教做美食电商网站
  • 购物网站seo镇江关键字优化品牌
  • 如何做设计网站页面设计市场调研的方法
  • 如何查到别人的网站做哪些竞价词哈尔滨百度搜索排名优化
  • 做任务 送科比网站seo整站排名
  • 如何把自己做的网站连上网必应bing国内版
  • 武冈网络推广厦门网站优化
  • 西安网站seo技术厂家seo网站排名软件
  • 做网站电脑需要配置很好吗5118站长工具
  • 网站设计收费网络运营团队
  • 织梦企业网站源码前端seo搜索引擎优化
  • wordpress 微信 登录界面优化大师下载旧版本安装
  • 购物网站的后台中国网评中国网评
  • wordpress网站如何播放视频播放器百度seo优化排名软件
  • 企业网站 开源关键词歌词林俊杰
  • 做自媒体要知道的网站十大免费无代码开发软件
  • 国外购物网站怎么做四川省最新疫情情况
  • 工程建设网站导航图高端企业网站建设
  • 做一网站要什么时候开始网站关键字优化价格
  • 可以做设计的网站广州百度推广电话
  • 焦作做网站最专业的公司seo搜索推广
  • 电脑卸载不了wordpressseo与网络推广的区别和联系