中国工商做年报网站,做的网站空白了,开篇网络,新手建设什么网站好input_t input_t.squeeze(1) 这行代码用于从 input_t 中去除尺寸为1的维度。在深度学习中#xff0c;经常会出现具有额外尺寸为1的维度#xff0c;这些维度通常是为了匹配模型的期望输入维度而添加的。
在这里#xff0c;input_t可能具有形状 (batch_size, 1, feature_dim…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, strides3, activation“relu”)), (354, 32, 179, 18) 108 TimeDistributed(Conv1D(20, 5, strides2, 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_sequencesTrue) (354, 32, 19) 988 TimeDistributed(Dense(1)) (354, 32, 1) 20
为什么输入一定是四维的后面都是四维why 这里我把T和channel弄混了平常所说的Conv1d这种是没有T这个维度的但是有channel这个维度。即原本的Conv1d是三维的现在加上时间T这个维度一共四维
TimeDistributed输入至少为 3Dbs, 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第一个参数就是outchanneltf中是缺省了输入维度的会自动匹配。其中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这一维度其实称之为特征维度无论是1d2d3d都是在描述数据的多少比如一个序列长度为12比如一个图片的像素点有12 * 12个。 但是如果一个序列被三个传感器xyz检测记录合起来组成这一个数据点那么描述这一个数据点需要三个“特征”channel 3同样对于每个像素点的特征数量是3所以channel 3.
无论batchsize还是seq_len都是用来方便处理数据的要区分于数据本身的特征特征维度共有多少个特征每个特征几维
为什么需要TimeDistributed 首先对于卷积操作来说维度是固定的就像函数传参一样不是任意长度的。