1 常见参数
model.add(LSTM(units, #输出的大小(神经元个数)
activation=None, #激活函数
use_bias=True, #是否添加偏置
kernel_initializer='glorot_uniform', #权重矩阵初始化
bias_initializer='zeros', #偏置初始化
kernel_regularizer=None, #权重矩阵的正则函数
bias_regularizer=None,#偏置的的正则函数
return_sequences=False )
当LSTM层作为输入层时需要添加 input_shape代表输入数据的形状(即[timesteps,fearures]),batchsize不显示,即实际LSTM层输入数据为三维数据,[batchsize,timesteps,fearures]。
return_sequences=False:LSTM层输出单个 hidden state值,即输出的timesteps=1
return_sequences=True:LSTM层输出全部time step 的 hidden state值,即保留输入的timesteps
2 input_shape=(timesteps,fearures)
timesteps:时间步,n个时间步代表一组样本中有n个时间步;
fearures:特征点,n个特征表示一个时间步可以观察到n个特征;
举例输入数据X=[[[10] [20] [30]] 输出数据y=[40 50 60 70 80 90],
[[20] [30] [40]]
[[30] [40] [50]]
[[40] [50] [60]]
[[50] [60] [70]]
[[60] [70] [80]]]
上面X的shape是(6,3,1),表示六个样本,每个样本中有三个观察点,每个观察点可以得到一个特征。当我们想要用X的一组样本(如[[10] [20] [30])来预测y的一个样本(40)时,样本输入数据的shape是(3,1),即input_shape=(3,1)。
3 LSTM层参数计算
from keras.layers import LSTM
from keras.models import Sequential
model=Sequential()
model.add( LSTM(10,input_shape=(13,5)))
model.summary()
参数公式:para=4×(输出×(输出+输入+1))
即para=4×(10×(10+5+1))=640