NMT中的一个问题
- problem: 输入的句子长短不一,如果要将所有的长短的输入都提炼为同样长度的向量,是比较难的。
- solution: 实际工程中较多的会通过堆叠RNN来解决不定长的input sentences的问题
- CS224n Assignment4: 通过找出最长的句子,再将其他所有的句子都扩充至这一长度来达到input sentences等长的效果。
python文档
- Library Reference标准库参考:标准库中的API在这里有定义和注释
- Language Reference语法参考: 这里给出了python的语法,上下文无关文法
*在python文档中表示0 ~ n个重复
[]表示可选择的 0 ~ 1
python max()函数
- max为Python的内置函数,可以找出iterable中最大的元素,也可以找出传入的多个参数中的最大值。
- 其参数可以为iterable可迭代对象,iterable包括所有的序列类型,以及某些非序列类型。
max([len(sent) for sent in sents])
形成list
sent + ['ant'] * 5
list的扩充,类似有append函数
python函数定义
- 形参后的:为形参的注释
- 函数后的-> 为函数返回值的注释
yield
- 遍历函数如果遍历过程中每一步输出,这样的复用性不高
- 如果返回一个list或者序列,可复用,这样会占用大量的内存
- yield结合了这两者,既可以复用又不占用内存,使用它的函数无return,其使得函数变成了一个generator,相当于每次遍历跑一遍当轮次的代码
- 可以通过next()函数来体验generator的过程
CS224n - Assignment4
- utils.py提供了pad_sents, read_corpus, batch_iter
pad_sents: 扩充较短的input sentences使得所有的句子长短一致
read_corpus: 从语言文本中读入list[list[str]]
batch_iter: 提供了数据集的batch generator,每个batch包括source sentences和相应的target sentences- vocab.py为单词表生成器
VocabEntry类为输入语言或者输出语言的词汇入口,提供了word2int & int2word接口
Vocab类封装source & targe language
遗留问题
- 继续完成Assignment4
- 熟悉python语法
- 熟悉图神经网络代码