python 库笔记:pytorch-tcn
提供以下功能
- TCN类
Conv1d和ConvTranspose1d层的实现,并带有因果/非因果切换功能- 流式推理(Streaming Inference)选项,可用于实时应用
- 兼容 ONNX(Open Neural Network Exchange)格式,可在非Python环境(如C++)中使用已训练的TCN模型
1 TCN类
from pytorch_tcn import TCNmodel = TCN(num_inputs: int,num_channels: ArrayLike,kernel_size: int = 4,dilations: Optional[ ArrayLike ] = None,dilation_reset: Optional[ int ] = None,dropout: float = 0.1,causal: bool = True,use_norm: str = 'weight_norm',activation: str = 'relu',kernel_initializer: str = 'xavier_uniform',use_skip_connections: bool = False,input_shape: str = 'NCL',embedding_shapes: Optional[ ArrayLike ] = None,embedding_mode: str = 'add',use_gate: bool = False,lookahead: int = 0,output_projection: Optional[ int ] = None,output_activation: Optional[ str ] = None,
)
1.1 输入&输出形状
(N, Cin, L)
N:批量大小Cin:输入/出 通道数(特征维度)L:序列长度
1.2 参数详解
| num_inputs | 输入数据的特征维度 |
| num_channels | 一个list,指定每个残差块的通道数 (这个TCN多少层也是通过这个来确定的) |
| kernel_size | 卷积核大小 |
| dilations | 膨胀率
|
| dilation_reset | 膨胀率重置
|
| dropout | |
| causal | 是否使用因果卷积
|
| use_norm | 归一化方式
|
| activation | 激活函数:默认 relu |
| kernel_initializer | 权重初始化
|
| use_skip_connections | 跳跃连接
|
| input_shape | 输入形状格式)
|
| output_projection | 输出投影:
|
| output_activation | 输出激活函数:
|
2因果卷积
pytorch-TCN 提供了一个 因果卷积层,它继承自 PyTorch 的 Conv1d,可以直接替换标准的 Conv1d 层
2.1 参数说明
2.1.1 TemporalConv1d(因果卷积层)
| in_channels | 输入通道数 |
| out_channels | 输出通道数 |
| kernel_size | 卷积核大小 |
| stride | 步长,默认 1 |
| padding | 默认 0,自动计算,若手动设置可能会报错 |
| dilation | 膨胀率,默认 1 |
| groups | 组卷积数,默认 1 |
| bias | 是否使用偏置,默认 True |
| padding_mode | 填充模式,默认 zeros |
| device | 运行设备,默认 None(自动选择) |
| dtype | 数据类型,默认 None |
| causal | 是否使用因果卷积,默认 True |
2.1.2 TemporalConvTranspose1d(转置卷积层)
| in_channels | 输入通道数 |
| out_channels | 输出通道数 |
| kernel_size | 卷积核大小 |
| stride | 步长,默认 1 |
| padding | 默认 0,自动计算,若手动设置可能会报错 |
| dilation | 膨胀率,默认 1 |
| groups | 组卷积数,默认 1 |
| bias | 是否使用偏置,默认 True |
| padding_mode | 填充模式,默认 zeros |
| device | 运行设备,默认 None(自动选择) |
| dtype | 数据类型,默认 None |
| causal | 是否使用因果卷积,默认 True |
2.2 基本使用举例
from pytorch_tcn import TemporalConv1d, TemporalConvTranspose1d
import torch# 因果卷积层
conv = TemporalConv1d(in_channels=32, # 输入通道数out_channels=32, # 输出通道数kernel_size=3, # 卷积核大小causal=True # 是否使用因果卷积
)# 反卷积层(转置卷积)
conv_t = TemporalConvTranspose1d(in_channels=32,out_channels=32,kernel_size=4,stride=2
)# 前向传播
x = torch.randn(10, 32, 100) # (batch_size=10, in_channels=32, seq_len=100)y = conv(x, inference=False, in_buffer=None)
# 进行卷积运算
y_t = conv_t(x, inference=False, in_buffer=None)
# 进行转置卷积y.shape,y_t.shape
#(torch.Size([10, 32, 100]), torch.Size([10, 32, 200]))
3 流式推理
- 模型能够逐块(blockwise)处理数据,而无需加载完整的序列。
- 这一功能对于实时应用至关重要。
3.1 流式推理的挑战
- 在 TCN 结构中,若
kernel_size > 1,为了保证输出的时间步与输入相同,TCN 始终会使用零填充(zero padding)。 - 然而,在块状处理(blockwise processing)时,零填充可能会导致感受野断裂,从而影响模型的推理效果
- 假设输入序列为[ X1, X2, X3, X4 ]
- 使用
kernel_size=3,dilation=1的因果网络时,第一层的填充长度为2 - 期望的输入格式:[ 0, 0, X1, X2, X3, X4 ]
- 但若按块状输入
[X1, X2]和[X3, X4],则会导致:[ 0, 0, X1, X2 ] + [ 0, 0, X3, X4 ] - ——>不同块的填充断裂,使得推理结果与整体序列处理时不同,影响模型的表现。
- ——>TCN 采用内部缓冲区(buffer),用于存储网络的输入历史,并在下一次推理时将其作为填充
- 因此,无论数据是否是整块输入还是逐块输入,最终输出都是一致的。
- 注意:流式推理时,批量大小
batch_size必须为1
3.2 如何使用流式推理
from pytorch_tcn import TCN# 初始化 TCN 模型
tcn = TCN(num_inputs=10, # 输入特征数num_channels=[32, 64, 128],causal=True, # 流式推理只适用于因果网络
)# 处理新序列前 **必须** 重置缓冲区
tcn.reset_buffers()
#作用是,清空存储的历史输入,确保每次推理不会受到上一次序列的影响。# 流式推理的输入数据按块分割
for block in blocks: # 每个 block 形状:(1, num_inputs, block_size)out = tcn(block, inference=True) # 启用流式推理,使 TCN 在推理时利用缓冲区填充,确保逐块处理时的输出与完整序列处理时一致。
相关文章:
python 库笔记:pytorch-tcn
提供以下功能 TCN类Conv1d 和 ConvTranspose1d 层的实现,并带有因果/非因果切换功能流式推理(Streaming Inference)选项,可用于实时应用兼容 ONNX(Open Neural Network Exchange)格式,可在非Py…...
如何使用MySQL快速定位慢SQL问题?企业级开发中常见业务场景中实际发生的例子,涉及分页查询问题。(二)
如何使用MySQL快速定位慢SQL问题? 在企业级开发中,尤其是涉及到订单查询的业务时,经常会发生慢查询的问题。比如用户翻页到后面的页数时,查询变慢,因为传统的LIMIT offset, size在数据量大时效率低下。这时候ÿ…...
新造车不再比拼排名,恰是曲终人散时,剩者为王
据称新能源汽车周销量不再发布,这可能也预示着新造车终于到了给出答案的时候了,新造车企业前三强已基本确立,其余那些落后的车企已很难有突围的机会,而特斯拉无疑是其中的最大赢家。 3月份第一周的数据显示,销量最高的…...
博客迁移----宝塔面板一键迁移遇到问题
前景 阿里云轻量级服务器到期了,又免费领了个ESC, 安转了宝塔面板。现在需要迁移数据,使用宝塔面板一键迁移功能,完成了数据的迁移,改了域名的解析,现在进入博客是显示502 bad grateway 宝塔搬家参考链接…...
蓝桥杯练习day1:自除数
前言 自除数 是指可以被它包含的每一位数整除的数。 例如,128 是一个 自除数 ,因为 128 % 1 0,128 % 2 0,128 % 8 0。 自除数 不允许包含 0 。 给定两个整数 left 和 right ,返回一个列表,列表的元素…...
大数据处理最容易的开源平台
大数据处理最容易的开源平台可以从多个角度进行分析,包括易用性、灵活性、成本效益以及社区支持等方面。 Apache Spark Apache Spark 是一个广泛使用的开源大数据处理框架,以其快速、通用和易于使用的特点而著称。它支持多种编程语言(如 Scal…...
Dify 使用 - 创建 翻译 工作流
文章目录 1、选择 模板2、设置 和 基本使用3、运行应用 1、选择 模板 2、设置 和 基本使用 翻译模板 自带了系统提示词,你也可以修改 3、运行应用 右上角 点击 发布 – 更新,运行应用,就可以在新的对话界面中使用此功能 2025-03-18&#x…...
TreelabPLMSCM数字化供应链解决方案0608(61页PPT)(文末有下载方式)
详细资料请看本解读文章的最后内容。 资料解读:TreelabPLMSCM 数字化供应链解决方案 0608 在当今快速变化的市场环境中,企业面临着诸多挑战,Treelab 数智化 PLM_SCM 行业解决方案应运而生。该方案聚焦市场趋势与行业现状,致力于解…...
LogicFlow介绍
LogicFlow介绍 LogicFlow是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow支持前端自定义开发各种逻辑编排场景,如流程图、ER图、BPMN流程等。在工作审批流配置、机器人逻辑编排、无代码平…...
[蓝桥杯 2023 省 B] 飞机降落
[蓝桥杯 2023 省 B] 飞机降落 题目描述 N N N 架飞机准备降落到某个只有一条跑道的机场。其中第 i i i 架飞机在 T i T_{i} Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 D i D_{i} Di 个单位时间,即它最早可以于 T i T_{i} Ti 时刻…...
应用分层简介
一、什么是应用分层 应用分层是一种软件开发设计思想,它将应用程序分为多个层次,每个层次各司其职,多个层次之间协同提供完整的功能,根据项目的复杂程度,将项目分为三层或者更多层。 常见的MCV设计模式,就…...
基于香橙派 KunpengPro学习CANN(3)——pytorch 模型迁移
通用模型迁移适配可以分为四个阶段:迁移分析、迁移适配、精度调试与性能调优。 迁移分析 迁移支持度分析: 准备NPU环境,获取模型的源码、权重和数据集等文件;使用迁移分析工具采集目标网络中的模型/算子清单,识别第三方…...
【Ratis】ReferenceCountedObject接口的作用及参考意义
Apache Ratis的项目源码里,大量用到了自定义的ReferenceCountedObject接口。 本文就来学习一下这个接口的作用,并借鉴一下它解决的问题和实现原理。 功能与作用 ReferenceCountedObject 是一个接口,用于管理对象的引用计数。它的主要功能和作用包括: 引用计数管理: 提供…...
CentOS下安装ElasticSearch(日志分析)
准备目录 搞一个自己喜欢的目录 mkdir /usr/local/app 切换到该目录 cd /usr/local/app 下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz 选择其他版本 点击进入官网...
动态库、静态库、导入库
静态库、动态库与导入库详解 核心概念 类型定义文件扩展名链接方式运行时依赖静态库预编译代码集合,编译时嵌入可执行文件.lib (Windows)、.a (Linux/MinGW)直接链接到可执行文件无动态库运行时加载的代码库,允许多程序共享.dll (Windows)、.so (Linux)…...
电子硬件入门(三)——偏置电路
文章目录 一、先理解问题:为什么需要偏置电压?二.偏置电路生成的四大核心零件三、工作流程图解四、实物电路对照五、常见问题答疑 一、先理解问题:为什么需要偏置电压? 想象一下,电机的电流像一条波浪线&#x…...
使用C++写一个递推计算均方差和标准差的用例
文章目录 代码输出关键实现说明1. 类设计2. 算法核心3. 数值稳定性 扩展应用场景1. 实时传感器数据处理2. 大规模数据集分块处理 总结 以下是用 C 实现递推计算均值、方差和标准差的完整示例代码,基于 Welford 算法,适用于实时数据流或大数据场景&#x…...
springBoot中不添加依赖 , 手动生成一个token ,并校验token,在统一拦截器中进行校验 (使用简单 , 但是安全性会低一点)
要在 Spring Boot 里实现接口统一拦截并校验 Token,可以借助 Spring 的拦截器机制。下面是具体的实现步骤和代码示例。 1. 创建 Token 工具类 import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgori…...
Vue:单文件组件
Vue:单文件组件 1、 什么是单文件组件? 在传统的Vue开发里,我们接触的是非单文件组件,它们通常被定义在同一个HTML文件中,随着项目规模的扩大,代码会变得杂乱无章,维护起来极为困难。而单文件…...
HarmonyOS NEXT开发实战——HUAWEI DevEco Studio 开发指南
概述 HUAWEI DevEco Studio(以下简称 DevEco Studio)是基于 IntelliJ IDEA Community 开源版本打造的一站式开发平台,专为 HarmonyOS 系统上的应用和元服务(以下简称 应用/元服务)提供高效的开发环境。 作为一款专业…...
IntelliJ IDEA 调试技巧指南
在日常开发中,调试是不可或缺的一部分。掌握调试工具的使用可以让我们更高效地定位和解决问题。本文将介绍一些在 IntelliJ IDEA 中常用的调试技巧,希望能帮助你在开发过程中更顺畅地解决问题。 1. 方法断点:快速定位实现类 方法断点可以帮…...
JavaScript变量声明与DOM操作指南
变量声明 1.变量声明有三个 var let 和 const 我们应该用那个呢? 首先var 先排除,老派写法,问题很多,可以淘汰掉… 2.let or const ? 建议: const 优先,尽量使用const,原因是:…...
嵌入式硬件篇---龙芯UART通信
文章目录 前言一、代码结构解析1. 头文件部分作用 2. 宏定义与全局变量龙芯特性 3. 主函数流程关键点 4. UART发送函数龙芯实现 5. 串口配置函数(set_port)龙芯注意事项 6. GPIO控制函数龙芯GPIO特性 7. PWM控制函数龙芯PWM实现 二、龙芯UART深度解析1. …...
[K!nd4SUS 2025] Crypto
最后一个把周末的补完。这个今天问了小鸡块神终于把一个补上,完成5/6,最后一个网站也上不去不弄了。 Matrices Matrices Matrices 这个是不是叫LWE呀,名词忘了,但意思还是知道。 b a*s e 这里的e是高斯分成,用1000…...
随机变量的不同收敛性
随机变量不同收敛性:一场有趣的趋近之旅😜 一、引言 在概率论这个奇妙的世界里,随机变量就像一群调皮的小精灵🧚 它们的行为充满了不确定性。而今天我们要讲的,就是这些小精灵们的 “趋近大冒险”—— 随机变量的不同…...
JavaScript 函数类型详解:函数声明、函数表达式、箭头函数
在 JavaScript 中,函数是构建逻辑的核心单元。本文将通过 定义对比、核心特性 和 使用场景 三个维度,全面解析以下三种函数类型的区别: 函数声明(Function Declaration)函数表达式(Function Expression&am…...
工作记录 2017-02-04
工作记录 2017-02-04 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、DataExport的设置中去掉了ListPayors,见DataExport\bin\dataexport.xml 2、“IPA/Group Name” 改为 “Insurance Name”。 3、修改了Payment Posted的E…...
Etcd 服务搭建
💢欢迎来到张胤尘的开源技术站 💥开源如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Etcd 服务搭建预编译的二进制文件安装下载 etcd 的…...
【C++】stack和queue的使用及模拟实现(含deque的简单介绍)
文章目录 前言一、deque的简单介绍1.引入deque的初衷2.deque的结构3.为什么选择deque作为stack和queue的底层默认容器 二、stack1.stack的介绍2.stack的使用3.stack的模拟实现 三、queue1.queue的介绍2.queue的使用3.queue的模拟实现 前言 一、deque的简单介绍(引入…...
Spring Boot - Spring Boot 静态资源映射(默认静态资源映射、自定义静态资源映射)
一、静态资源映射 在 Spring Boot 中,静态资源的映射是指将特定的 URL 路径与静态资源关联起来 静态资源有例如,HTML、CSS、JS、图片等 这使得客户端可以通过 URL 路径访问这些资源 二、默认静态资源映射 概述 Spring Boot 默认会将以下目录中的文件…...
