Lstm输入参数详细解释

Lstm输入参数详细解释:

比如建立双层lstm,以mnist数据集来进行叙述:
我们知道mnist数据集,是28*28;用lstm训练mnist数据集过程;
在这里插入图片描述

def DoubleLSTM(train_x,train_y,valid_x,valid_y,test_x,test_y):
    #创建模型
    model=Sequential()
    model.add(LSTM(64,input_shape=(28,28),return_sequences=True))  #返回所有节点的输出
    model.add(LSTM(32,return_sequences=False))  #返回最后一个节点的输出
    model.add(Dense(10,activation='softmax'))
    #查看网络结构
    model.summary()

输出结果:
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_5 (LSTM)                (None, 28, 64)            23808     
_________________________________________________________________
lstm_6 (LSTM)                (None, 32)                12416     
_________________________________________________________________
dense_5 (Dense)              (None, 10)                330       
=================================================================
Total params: 36,554
Trainable params: 36,554
Non-trainable params: 0

model.add(LSTM(64,input_shape=(28,28),return_sequences=True)) #64表示,输出的维度是64,也即是隐层维度,input_shape(time_step,feature_dim)中,time_step表示有多少个作为输入,feature_dim表示每次输入的一维向量。return_sequences=True表示返回所有节点的输出。

例如:计算输出参数

第一层model.add(LSTM(64,input_shape=(28,28),return_sequences=True)),它的参数很好计算。可以知道隐层是(1 * 64),输入向量(1 * 28),则联合输入是(1 * (64+28)),因为输出是(1 * 64),则W的参数(92 * 64),再加上b的参数(1 * 64).即一个门的参数是(92 * 64)+64=5952,又因为有3个门和1个细胞状态更新,即5952 * 4=23808,计算完毕。

おすすめ

転載: blog.csdn.net/weixin_44885180/article/details/114999377