【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]

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

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

相关文章

LLM大语言模型应用方案之RAG检索增强生成的实现步骤。

0.我理解的RAG 什么是RAG&#xff1f; RAG的全称是“检索增强生成模型”&#xff08;Retrieval-Augmented Generation&#xff09;。这是一种特别聪明的大语言模型。 RAG是怎么工作的呢&#xff1f; 1.检索&#xff1a;当你问RAG一个问题时&#xff0c;它会先去“图书…

前端 JS 经典:数字变化动画

1. 需求 给你一个数字&#xff0c;当这个数字变化时&#xff0c;有一个动画的过渡效果。 2. 思路 首先我们要知道两个数字变化需要多少秒&#xff0c;然后变化的范围&#xff0c;算出变化的速度。记住开始变化的时间&#xff0c;然后通过 requestAnimationFrame 函数&#x…

深入理解Qt状态机的应用(二)

前文《深入理解Qt状态机的应用&#xff08;一&#xff09;》介绍了状态机的理论知识以及简单的状态机示例。在实际应用场景中&#xff0c;状态机往往会比较复杂&#xff1b;本文将详细介绍分组状态、历史状态、并行状态以及其他技术。 通过分组状态共享转换 还是以交通信号灯…

【计算机毕业设计】211校园约拍微信小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

进入docker容器内部操作mysql数据库

文章目录 1、查询docker容器2、进入mysql容器内部3、连接mysql数据库4、查询mysql所有的数据库5、使用某个数据库6、展示数据库中所有的表7、查询某张表8、断开mysql9、退出mysql容器 1、查询docker容器 [rootlocalhost ~]# docker ps CONTAINER ID IMAGE …

java.lang.ClassNotFoundException: javafx.util.Pair的问题解决与原因详解

先说解决办法: 1、引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.12</version> </dependency>2、更换代码依赖地址&#xff1a; 原来依赖地址&#xff1a; import j…

YOLOv10改进 | 注意力篇 | YOLOv10引入EMAttention(EMA)注意力

1. EMA介绍 1.1 摘要:在各种计算机视觉任务中说明了通道或空间注意机制在产生更可辨别的特征表示方面的显着有效性。 然而,通过通道降维来建模跨通道关系可能会给提取深度视觉表示带来副作用。 本文提出了一种新型高效的多尺度注意力(EMA)模块。 着眼于保留每个通道的信息…

springMVC的bug

写SpringMVC时&#xff0c;配置视图解析器路径中少写了个“/”导致url拼接错误&#xff0c;无法返回视图

机器学习参数寻优:方法、实例与分析

机器学习参数寻优:方法、实例与分析 机器学习模型的性能很大程度上依赖于其参数的选择。参数寻优(Hyperparameter Tuning)是提升模型表现的关键步骤之一。本文将详细介绍主流的参数寻优方法,包括网格搜索(Grid Search)、随机搜索(Random Search)、贝叶斯优化(Bayesia…

开发基于Java语言的SaaS(Software-as-a-Service,软件即服务)模式的HIS系统详解 HIS系统源码 支持二开

开发基于Java语言的SaaS&#xff08;Software-as-a-Service&#xff0c;软件即服务&#xff09;模式的HIS系统详解 HIS系统源码 支持二开 开发基于Java语言的SaaS&#xff08;Software-as-a-Service&#xff0c;软件即服务&#xff09;模式的HIS&#xff08;Hospital Informat…

SpringCloud Alibaba Sentinel 流量控制之流控模式实践总结

官网文档&#xff1a;https://sentinelguard.io/zh-cn/docs/flow-control.html wiki地址&#xff1a;https://github.com/alibaba/Sentinel/wiki/%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6 本文版本&#xff1a;spring-cloud-starter-alibaba&#xff1a;2.2.0.RELEASE 如下图所…

STM32单片机I2C通信详解

文章目录 1. I2C通信概述 2. 硬件电路 3. I2C时序基本单元 4. I2C时序 4.1 指定地址写 4.2 当前地址读 4.3 指定地址读 5. I2C外设 6. I2C框图 7. I2C基本结构 8. 主机发送 9. 主机接收 10. 软件和硬件波形对比 11. 代码示例 1. I2C通信概述 I2C(Inter-Integrat…

arm-linux-strip 指令的作用

指令作用 arm-linux-strip 是一个用于从目标文件&#xff08;如可执行文件或对象文件&#xff09;中移除符号信息的工具。这些符号信息&#xff08;如函数名、变量名等&#xff09;在开发过程中很有用&#xff0c;因为它们允许调试器&#xff08;如 GDB&#xff09;确定内存地址…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【11】ElasticSearch

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【11】ElasticSearch 简介基本概念ElasticSearch概念-倒排索引安装基本命令ik 分词器SpringBoot整合测试存储数据&#xff1a;测试复杂检索同步与异步调用 参考 简介 Elasticsearch 是一…

华为云与AWS负载均衡服务深度对比:性能、成本与可用性

随着云计算的迅速发展&#xff0c;企业对于云服务提供商的选择变得越来越关键。在选择云服务提供商时&#xff0c;负载均衡服务是企业关注的重点之一。我们九河云将深入比较两大知名云服务提供商华为云和AWS的负载均衡服务&#xff0c;从性能、成本和可用性等方面进行对比。 AW…

数据库并发控制技术

1.数据库中为什么要采用并发控制&#xff1f;并发控制技术能保证事务的哪些特性&#xff1f; 因为多个事务的并发操作会对数据库产生影响&#xff0c;当多个事务同时访问一个数据时就会互相干扰。并发控制技术能保证事务的一致性&#xff0c;隔离性。一致性是指事务要么全部运…

ARM服务器虚拟化手机,云手机推流应用案例

大家都知道&#xff0c;ARM 服务器虚拟化手机和云手机推流技术可算是热门话题&#xff0c;不止是企业&#xff0c;个人卖家也会通过云手机推流来获得更多的客源&#xff0c;实现经济自由&#xff0c;但是针对云手机的推流&#xff0c;很多人还是不知道有哪些应用场景~我们可以展…

三十分钟学会RabbitMQ

1、初识MQ 1.1 MQ是什么&#xff1f; MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO先入先出&#xff0c;只不过队列中存放的内容是message而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中…

SpringCloud Alibaba Sentinel基础入门与安装

GitHub地址&#xff1a;https://github.com/alibaba/Sentinel 中文文档&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html 下载地址&#xff1a;https://github.com/alibaba/Sentinel/releases Spring Cloud Alibaba 官方说明文档&#xff1a;Spring Clou…

前端根据环境变量配置网页的title和favicon

前端根据环境变量配置网页的title和favicon 前言流程步骤一、设置environment文件二、在入口文件中配置三、删除index.html中的title和 icon link四、使用对应的打包命令进行部署 注意事项一、angular中&#xff0c;需要在angular.json添加favicon.ico额外的构建 前言 有些项目…