因为需要使用 lstm,lstm的代码,和官方教程解释得不是很详细,故对 theano lstm进行一些分析理解。
整体框架理解
这份代码实现的功能是利用RNN(LSTM)对IMDB每部电影的评论页面的评论进行情感分类。
这里的数据集比较特殊。一个包含所有句子的二重列表,列表的每个元素也为一个列表。
大小为2的tuple,train[0][n] 代表一个句子(对于词库索引的List),train[1][n]为该句子的情感分类标签。
举个简单的栗子,
把整个过程中数据的维度的变化画出来,我觉得更利于理解程序的流程(结合代码看体验更佳)。
各个函数分析
def get_minibatches_idx(n, minibatch_size, shuffle=False):
返回值:zip(range(len(minibatches)), minibatches)
该函数得到了 shuffle 后的个数为 (n/batch_size)+1个batch,每个batch为minibatch_size的索引