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

【Python/Pytorch 】-- 滑动窗口算法

在这里插入图片描述

文章目录

文章目录

  • 00 写在前面
  • 01 基于Python版本的滑动窗口代码
  • 02 算法效果

00 写在前面

写这个算法原因是:训练了一个时序网络,该网络模型的时序维度为32,而测试数据的时序维度为90。因此需要采用滑动窗口的方法,生成一系列32维度的窗口,用于测试。

该算法中用到了一个python的关键字yield,其用于定义生成器函数。生成器函数与普通函数不同,它可以在执行过程中暂停,并在以后继续从暂停的地方恢复执行。每次调用生成器函数时,都会返回一个生成器对象,而不是直接返回一个值。在你的代码中,yield 用于产生一个滑动窗口。

01 基于Python版本的滑动窗口代码

def window(seq, size=3, stride=2):"""返回一个滑动窗口(宽度为'size')在数据序列'seq'上,具有指定的'stride'。例如,seq -> (s0, s1, ..., s[size-1]), (s[stride], s[stride+1], ..., s[stride+size-1]), ..."""it = iter(seq)  # 从输入序列创建一个迭代器result = []  # 初始化一个空列表来存储当前窗口# 遍历迭代器中的每个元素for elem in it:result.append(elem)  # 将当前元素添加到窗口中if len(result) == size:  # 如果窗口达到所需大小yield result  # 生成当前窗口result = result[stride:]  # 根据步幅长度滑动窗口# 如果主循环后结果列表中还有剩余元素if result:i = 0  # 初始化一个计数器来填充剩余窗口while len(result) < size:  # 当窗口小于所需大小时result.append(seq[i % len(seq)])  # 从序列开始添加元素i += 1  # 增加计数器yield result  # 生成最终窗口

02 算法效果

# 示例使用
seq = [1, 2, 3, 4, 5, 6, 7, 8]
for windowed in window(seq, size=3, stride=2):print(windowed)  # 打印每个滑动窗口初始状态:result = []
添加元素:result = [1, 2, 3] 生成窗口 [1, 2, 3],重置 result = [3]
添加元素:result = [3, 4, 5] 生成窗口 [3, 4, 5],重置 result = [5]
添加元素:result = [5, 6, 7] 生成窗口 [5, 6, 7],重置 result = [7]
添加元素:result = [7, 8]
填充元素:result = [7, 8, 1],生成最后一个窗口 [7, 8, 1]
http://www.lryc.cn/news/377236.html

相关文章:

  • Clickhouse集群create drop database可删除集群数据库或只删除本地数据库
  • 【docker】adoptopenjdk/openjdk8-openj9:alpine-slim了解
  • Vscode interaction window
  • 后端数据null前端统一显示成空
  • 【设计模式深度剖析】【9】【行为型】【访问者模式】| 以博物馆的导览员为例加深理解
  • Salesforce‘s 爱因斯坦机器人助手引领工业聊天机器人时代
  • Day7—zookeeper基本操作
  • 计算机组成原理---Cache的基本工作原理习题
  • springboot项目中切数据库(mysql-> pg)带来的适配问题:typeHandler
  • 从零开始的<vue2项目脚手架>搭建:vite+vue2+eslint
  • Hadoop升级失败,File system image contains an old layout version -64
  • [机器学习算法]决策树
  • springboot应用cpu飙升的原因排除
  • 反激开关电源EMI电路选型及计算
  • vue3前端对接后端的图片验证码
  • 【Unity】RPG2D龙城纷争(四)要诀、要诀数据集
  • 一种基于非线性滤波过程的旋转机械故障诊断方法(MATLAB)
  • HarmonyOS Next 系列之从手机选择图片或拍照上传功能实现(五)
  • 如果xml在mapper目录下,如何扫描到xml
  • 什么是无限铸币攻击?它是如何运作的?
  • 【Android】怎么使APP进行开机启动
  • 详细分析Element Plus的el-pagination基本知识(附Demo)
  • ubuntu换镜像源方法
  • python flask配置邮箱发送功能,使用flask_mail模块
  • Flask快速入门(路由、CBV、请求和响应、session)
  • 人工智能指数报告
  • 聊聊 Mybatis 动态 SQL
  • 【windows|004】BIOS 介绍及不同品牌电脑和服务器进入BIOS设置的方法
  • lvgl的应用:移植MusicPlayer(基于STM32F407)
  • Hadoop3:MapReduce中的Shuffle机制