lstm 的timestep_如何理解lstm的输入输出

例如这样一个数据集合,总共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:

c66369cfa0c7

image

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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值