—0436标题为nlp,但是到现在还没看宝可梦!不过感觉越来越近了!今天虽然是周六,不过还是4点就起了,最近这个时间的学习效率越来越高,不是在自我感动,要努力,要出活。
—0507写了近期计划,可以开始继续coding了!!!昨天晚上看完了rnn,还没动手实现呢!
1、one_hot(,)
独热编码的种类数(第二个参数)不能少于实际值(第一个参数)种类的数量,不然会报错。
2、len(new_state)和和new_state的维度
为了和后面的lstm兼容,把new_state写成了一个tuple。在rnn中,这个tuple只有一个,是两维的。大小是[batch_size,num_hiddens]
0553干饭干饭干饭!!!
–0629吃饭的时候看完了沐沐的Q&A,还找了半天蛋白杯哈哈哈!继续码代码了!
3、梯度剪裁
梯度剪裁通过限制梯度范数的大小,避免其过大,造成梯度爆炸。
4、torch.cat的用法
cat是将多个张量拼接,不是将一个张量转换维度(reshape)
5、rnnepoch和iter和batch的关系
一个iter就是一个epoch。 一个iter可以yield几个batch。 每个batch中包含batch_size个seqs。 每个seqs有num_seqs个时间步,做num_seqs次预测。
6、super()用法
其实就是调用父类的init,相当于是继承父类的属性和函数,如果里面有**kwargs相当于是给父类传参。
参考:https://zhuanlan.zhihu.com/p/260533951
7、nn.RNN(,)的输出是隐藏层,而不是最后的y
8、框架优化主要体现在
(1)loss (2)updater (3)layers A. nn.RNN(len(vocab, num_hiddens) B.nn.Linear(,)
GRU
1、gru主要是两个门:重置门和更新门;这两个门都是通过学习产生的,与xt和ht-1有关。 2、重置门可以决定ht-tilta要多要Xt;更新门可以决定保留多少ht-1。最终可以达到只要xt或者只看ht-1的效果 3、由2,总的来说,重置门可以决定短期记忆;而更新门可以决定长期记忆。
-----1030GRU的手撕还要再写几遍,不熟悉,多理解一下,先去吃饭。
—1406复习一下GRU的门控结构。 不要忘记加激活函数哇~
LSTM
这一块书上比沐神讲的清楚哈哈 1、另一种更新隐状态h的机制——通过Memory cell来更新 2、遗忘门负责决定忘掉多少ct-1;输入门决定输入多少ct_tilta(用tanh);输出门则决定将多少Ct输出给H。 甚至感觉比GRU清晰。 GRU总结: 1、两个门:Reset和Update。 Reset用于计算H_tilda,决定留下多少之前的H;Update用于计算H,决定留下多少X
我感觉我说的很对,但是好像和小结里说反了。。
–1508写完lstm啦,没做答辩ppt总觉得慌慌的。要不先做一下叭唉唉哎
----5月22号0527补------------呜呜呜,吃完饭去做ppt了,一下子做到了半夜,没有刷题和看翻译,不过好的是今天可以把沐神的课看完啦!!!1
|