美文网首页
如何理解lstm的输入输出

如何理解lstm的输入输出

作者: 帅气的我要加油 | 来源:发表于2018-07-09 16:23 被阅读117次

    例如这样一个数据集合,总共100条句子,每个句子20个词,每个词都由一个80维的向量表示。在lstm中,单个样本即单条句子输入下(shape是 [1 , 20, 80]),假如设定每一个time step的输入是一个词(当然这不一定,你也可以调成两个词或者更多个数的词),则在t0时刻是第一个时间步,输入x0则为代表一条句子(一个样本)中第1个词的80维向量,t1是第二个时间步,x1表示该句子中第2个词的80维向量,依次类推t19输入是最后一个词即第20个词的向量表示。

    常见的tf或者keras中lstm的参数(samples, timestep, input_dim),samples是指批量训练样本的数量, timestep是时间步(这个时间步可自己设置)比如上面说的20,input-dim是每个time step的输入shape

    假设输入的样本是一条条的句子:

    样本1:“”富强,民主,文明,和谐,自由,平等,公正,法治,爱国,敬业,诚信,友善“”

    样本2:“”实现伟大中国梦“”

    样本3:“”跑得比谁都快“”

    对于这样的不同长度的样本,因为长短不一,需要先编码,embedding成相同维度的数据。比如每个句子embedding成shape为[24, 80],这样的话,若批训练的BatchSize是1的话, A假如你的时间步设置为12,那么需要将单个样本X, reshape成【1,12,160】,输入到LSTM,此时LSTM中每个时间步输入X_t的shape是[1,160];

    B假如你的时间步设置为24,那么需要将单个样本X, reshape成【1, 24, 80】, 输入到LSTM, 此时LSTM每个时间步输入X_t的shape就是【1,80】.

    盗用下知友的图如下, X_t就是下图中的X0,X1,.....Xn:

    image

    其实,从另一个角度也可以区分,time_step是神经网络的参数,网络建好了便不会改变;batch是训练参数,在训练时可根据效果随时调整。

    相关文章

      网友评论

          本文标题:如何理解lstm的输入输出

          本文链接:https://www.haomeiwen.com/subject/qddtpftx.html