pytorch,tf维度理解RNN

input_t = input_t.squeeze(1) 这行代码用于从 input_t 中去除尺寸为1的维度。在深度学习中,经常会出现具有额外尺寸为1的维度,这些维度通常是为了匹配模型的期望输入维度而添加的。

在这里,input_t可能具有形状 (batch_size, 1, feature_dim),其中 1 表示时间步维度。在某些情况下,模型可能要求输入不包含时间步维度,而只包含 (batch_size, feature_dim) 的形状。为了适应模型的输入要求,squeeze(1) 被用来删除时间步维度,将 input_t 转换为 (batch_size, feature_dim) 的形状。

输入 (354, 32, 541, 1)
keras.layers.InputLayer(input_shape=(None, N, channels)),
TimeDistributed(Conv1D(18, 5, strides=3, activation=“relu”)), (354, 32, 179, 18) 108
TimeDistributed(Conv1D(20, 5, strides=2, activation=“relu”)), (354, 32, 88, 20) 1820
TimeDistributed(MaxPool1D()) (354, 32, 44, 20) 0
TimeDistributed(Conv1D(22, 5, activation=“relu”)) (354, 32, 40, 22) 2222
TimeDistributed(MaxPool1D()) (354, 32, 20, 22) 0
TimeDistributed(Conv1D(24, 5, activation=“relu”)) (354, 32, 16, 24) 2664
TimeDistributed(Flatten()) (354, 32, 384) 0
卷积层本质上是对一条数据进行各种特征变换(channel),最后经过Flatten降维,从二维的空间变回序列数据,交给RNN处理
TimeDistributed(Dense(32, activation=“relu”) (354, 32, 32) 12320
SimpleRNN(19, return_sequences=True) (354, 32, 19) 988
TimeDistributed(Dense(1)) (354, 32, 1) 20

为什么输入一定是四维的,后面都是四维,why?
这里我把T和channel弄混了,平常所说的Conv1d这种是没有T这个维度的,但是有channel这个维度。即,原本的Conv1d是三维的,现在加上时间T这个维度,一共四维

TimeDistributed输入至少为 3D(bs, time, feature),其中index = 1应该是时间所表示的维度
在这里插入图片描述
所以解释了,这里的None指的是T维度,因为input_shape是不包含batch维度
在这里插入图片描述
在这里插入图片描述
对于RNN:如果 return_sequences:返回 3D 张量, 尺寸为 (batch_size, timesteps, units)。
否则,返回尺寸为 (batch_size, units) 的 2D 张量

Conv1D的输入输出,pytorch和tf有何区别,维度分别是多少?
卷积是没有时间维度的!seq_len(T)维度(纵向的),这里的L准确来说是input_size(横向的)
Pytorch Conv1d:
Input:( N , C i n , L ) N, C_{in},L) N,Cin,L) L是指sequence length, C指channel数量
Output: ( N , C o u t , L o u t ) (N, C_{out}, L_{out}) (N,Cout,Lout)
like Conv2d:
Input: ( N , C i n , H , W ) (N, C_{in}, H, W) (N,Cin,H,W)
Onput: ( N , C o u t , H o u t , W o u t ) (N, C_{out}, H_{out}, W_{out}) (N,Cout,Hout,Wout)

TensorFlow:
Conv1d:(batch_size, seq_len, channels) 受data_format = “channels_last (默认) / first” 参数控制
tf的设计理念是,除了第一个inputlayer,其他层都不需要给出输入的维度,模型会自动算出。且input layer给出的维度是不包含 batch 轴的。
首先在写模型的时候,keras.layers.Conv1D(filters, kernel_size)第一个参数就是outchannel,tf中是缺省了输入维度的,会自动匹配。其中filters的数量你可以想象成你想提取多少个“特征”

RNN和RNNCELL输入
在PyTorch中可以使用下面两种方式去调用,分别是torch.nn.RNNCell()和torch.nn.RNN(),这两种方式的区别在于RNNCell()只能接受序列中单步的输入,且必须传入隐藏状态,而RNN()可以接受一个序列的输入,默认会传入全0的隐藏状态,也可以自己申明隐藏状态传入。
如果用RNNCell()就相当于要必须在外面加个for循环,进行seq_len次forward,显式地将hidden传入给下一次forward。

batch的理解
大多数情况可以直接忽略batch,因为他就是数据处理的一种并行化方式。但需要知道几个基础知识,比如模型参数是共享的,但是hidden state [bs, hidden state],这种有bs的肯定不是共享的,hidden state就是记录状态用的。

总结
RNN关心序列维度,缺省为单通道RNN,[bs, seq_len, input_size, 1]—>[bs,seq_len,input_size]
所以在把数据给RNN之前,都要把数据处理成上述样子。
CNN才关心Channel,而不关心seq_len,所以是[bs, channel, …]
最大的问题在于忽略了Channel这一维度,其实称之为特征维度:无论是1d,2d,3d都是在描述数据的多少,比如一个序列长度为12,比如一个图片的像素点有12 * 12个。
但是如果一个序列被三个传感器x,y,z检测记录,合起来组成这一个数据点,那么描述这一个数据点需要三个“特征”,channel = 3;同样,对于每个像素点的特征数量是3,所以channel = 3.

无论batchsize还是seq_len都是用来方便处理数据的,要区分于数据本身的特征:特征维度,共有多少个特征,每个特征几维

为什么需要TimeDistributed?
首先对于卷积操作来说维度是固定的,就像函数传参一样,不是任意长度的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML+CSS+JS+Django 实现前后端分离的科学计算器、利率计算器

🧮前后端分离计算器 📚git仓库链接和代码规范链接💼PSP表格🎇成品展示🏆🏆科学计算器:1. 默认界面与页面切换2. 四则运算、取余、括号3. 清零Clear 回退Back4. 错误提示 Error5. 读取历史记录Hi…

基于SSM的文化培训学校网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

【LeetCode】145. 二叉树的后序遍历 [ 左子树 右子树 根结点]

题目链接 文章目录 Python3方法一: 递归 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法二: 迭代 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法三: Morris ⟮ O ( n ) 、 O ( 1 ) ⟯ \lgroup O(n)、O(1) \rgroup ⟮O(n)、O(1)⟯写…

[SQL | MyBatis] MyBatis 简介

目录 一、MyBatis 简介 1、MyBatis 简介 2、工作流程 二、入门案例 1、准备工作 2、示例 三、Mapper 代理开发 1、问题简介 2、工作流程 3、注意事项 4、测试 四、核心配置文件 mybatis-config.xml 1、environment 2、typeAilases 五、基于 xml 的查询操作 1、…

Flutter之Widget生命周期

目录 初始化构造函数initStatedidChangeDependencies 运行时builddidUpdateWidget 组件移除deactivatedisposereassemble 函数生命周期说明:实际场景App生命周期 前言:生命周期是一个组件加载到卸载的整个周期,熟悉生命周期可以让我们在合适的…

嵌入式养成计划-46----QT--简易版网络聊天室实现

一百一十九、简易版网络聊天室实现 119.1 QT实现连接TCP协议 119.1.1 基于TCP的通信流程 119.1.2 QT中实现服务器过程 使用QTcpServer实例化一个服务器对象设置监听状态,通过listen()函数,可以监听特定的主机,也可以监听所有客户端&#x…

Cannot load from short array because “sun.awt.FontConfiguration.head“ is null

错误描述 在使用Easyexcel时发生了报错,请求返回空白 但是只在Linux上出现了该报错,在本地windows环境没有出现 JDK都使用的是17版本 错误原因 由于在linux上缺失Easyexcel使用的字体导致 解决办法 下载一个jdk1.8 在其jre/lib目录里复制fontconfi…

VTK8.0.0编译+QT5.9.2+VS2017

背景 VTK网上资料较多并且使用较多的版本可能是VTK8.2.0,但是由于之前先配置了QT 5.9.2 msvc2017 PCL1.8.1 VTK8.0.0环境,听说有人PCL1.8.1配置VTK8.2.0实测版本不兼容,需修改源码调试,比较麻烦,所以之前就使用的VT…

Ultralytics YOLOv8的关键特点

计算机视觉领域正在迅速增长,其中最重要的技术之一是目标检测。每六个月都会出现新的目标检测算法,不断提高准确性,与之前的算法相比。Ultralytics YOLOv8是最先进的目标检测算法,不仅提供卓越的准确性,还支持CPU和GPU…

微信小程序连接数据库与WXS的使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《微信小程序开发实战》。🎯&#x1f3a…

google登录k8s dashboard ui显示“您的连接不是私密连接”问题解决梳理

1.问题描述 OS Version:CentOS Linux release 7.9.2009 (Core) K8S Version:Kubernetes v1.20.4 k8s dashboard ui安装完毕后,通过google浏览器登录返现https网页,发现非官方的https网页无法打开 网址:https://192.168.10.236:31001 2.原…

C++之struct匿名结构体实例(二百四十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

互联网Java工程师面试题·Java 面试篇·第二弹

目录 15、什么是不可变对象(immutable object)?Java 中怎么创建一个不可变对象? 16、我们能创建一个包含可变对象的不可变对象吗? 17、Java 中应该使用什么数据类型来代表价格? 18、怎么将 byte 转换为 Str…

TCP和UDP的原理及其区别(三次握手、四次挥手)

TCP和UDP都是在传输层上工作的协议,用于在网络中传输数据。 1、TCP和UDP之间的区别 TCP和UDP的主要区别在于它们提供的服务和特性。TCP提供可靠的、有序的、基于连接的数据传输,适用于对数据完整性和可靠性要求较高的应用(邮件、短信&#xf…

常见面试题-Redis专栏(二)

theme: cyanosis typora-copy-images-to: imgsRedisson 分布式锁?在项目中哪里使用?多久会进行释放?如何加强一个分布式锁? 答: 首先入门级别的分布式锁是通过 setnx 进行实现,使用 setnx 实现有四个注意…

学生学徒作品分享——金融大模型-房屋租金价格影响因素分析与预测

金融大模型-房屋租金价格影响因素分析与预测项目背景 广州作为中国最发达的城市之一,每年都吸引大量务工人员前来就业,而租房是他们需要解决的最大问题之一,各地区租房需求日益增长。在租房过程,价格、交通是重要的考虑因素&a…

LabVIEW中管理大型数据

LabVIEW中管理大数据 LabVIEW的最大优势之一是自动内存管理。这种内存管理允许用户轻松创建字符串、数组和集群,而无需C/C用户经常担心。但是,这种内存管理设计为绝对安全,因此数据被非常频繁地复制。这通常不会造成任何问题,但是…

Python--循环中的两大关键词 break 与 continue

在Python循环中,经常会遇到两个常见的关键词:break 与 continue break:代表终止整个循环结构 continue:代表中止当前本次循环,继续下一次循环 break: 英 /breɪk/ v. 打破,打碎&#xff0c…

asp.net企业招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计

一、源码特点 asp.net 企业招聘管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语 言开发 asp.net企业招聘管理系统 二、功…

【LeetCode】94. 二叉树的中序遍历 [ 左子树 根结点 右子树 ]

题目链接 文章目录 Python3方法一: 递归 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法二: 迭代 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法三: Morris ⟮ O ( n ) 、 O ( 1 ) ⟯ \lgroup O(n)、O(1) \rgroup ⟮O(n)、O(1)⟯ C…