time_size: 时间步长,时间序列的长度
序列长度(sequence length)也可以理解为时间步(time step)比较好理解。比如一个语音输入,语音的长度就是序列长度。
input size表示一次输入的特征向量的大小。比如上面的全连接层神经网络,当batch_size为1是,输入的shape就是1x3
是不是脉搏就可以看做 输入的特征是1 因为是一通道的,图例是3通道的
例如这样一个数据集合,总共100条句子,每个句子20个词,每个词都由一个80维的向量表示。在lstm中,单个样本即单条句子输入下(shape是 [1 , 20, 80]),假如设定每一个time step的输入是一个词(当然这不一定,你也可以调成两个词或者更多个数的词),则在t0时刻是第一个时间步,输入x0则为代表一条句子(一个样本)中第1个词的80维向量,t1是第二个时间步,x1表示该句子中第2个词的80维向量,依次类推t19输入是最后一个词即第20个词的向量表示。
我是不是可以把1000条采样2000个点的脉搏数据理解为,【1000,2000,1】
100个句子 每个句子20个词 每个词由80维向量表示
1000条脉搏数据 每条脉搏数据由2000个采样点 每个采样点由1维向量表示
关于RNN,RNN是处理时间序列的网络架构【本质是线性层】,输入的数据必然是具有时间关系的,自己的脉搏数据【50*2000】 2000 这一维是具有时序关系的
RNN运算特别耗时,一般层数都不会选取太多,之前看有人分享的tips基本上都是3层以内
LSTM图解与代码参数对照 |
---|
![]() |
nn.LSTM(nput_size, hidden_size, num_layers) |
蓝色的模块是指前面的单位LSTM结构 |
横向连接的各个LSTM结构就是序列化。不同状态(时间)下的LSTM结 |
纵向连接的是同一状态下LSTM结构。或者我们可以简单看作是多个LSTM细胞结构串联,其个数为num_layers, 将其视为一个新的LSTM结构,并且按照时序连接起来 |
图中每个参数都是自带维度的 |
RNN输入的参数的理解 |
---|
![]() |
seqLen 代表序列长度 |
inputSize代表每个序列有几个维度特征,拿股票举例有开盘价、收盘价、最高价、最低价,有四个特征所以inputSize为4,但是脉搏的话,只有一个特征,所以inputSize应为1 |
dataset.shape = (seqLen,batchSize,inputSize) |