作者wheado (principal component QQ)
看板DataScience
标题[问题] RNN(GRU)的memory在评估模型中如何工作?
时间Wed Dec 23 17:25:25 2020
作业系统:Linux
问题类别:RNN中的GRU
使用工具:Pytorch
问题内容:
初学者学习有关RNN在Forward中的过程,
对於memory在评估或是实际应用中如何工作有疑惑。
首先
假设我有一个Batch(6)资料,
其维度分别代表( seq_len(40), batch_size(6), embedding_dim(15) ),
可以理解成(句子长度, batch size, word vector向量长度)。
接着
假设我有一个GRU Layer,他是单向的,一层(没有堆叠),memory的维度是7。
代码如下
https://imgur.com/IJoQ9mE
在执行Forward中,我必须给一个初始化的memory,
根据batch(6)、单向、memory维度(7),
我的初始化memory是一个(1, 6, 7)的Tensor。
在执行完之後我会得到输出值(y)以及更新的memory。
代码如下
https://imgur.com/3Sr7DId
假设我之後接了一个Fully connected layer结束,使用Log loss当作损失函数。
Train了一发之後,我想找一笔测试资料(batch=1)来输入给模型。
问题是
我在输入模型的初始化memory应该选哪一个?
还是我根本不需要去选?但是不选的话,很奇怪。
或是我完全错误理解GRU的工作模式了?
请高手指教,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.168.199.15 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1608715527.A.872.html
1F:推 winston82926: 如果用一开始rand出来的initial hidden vector (h_0 12/27 13:42
2F:→ winston82926: ) train好後,就固定他不要动只要丢input (x)就好 12/27 13:42
3F:推 patrick2dot0: pytorch document的nn.GRU有写 12/27 13:59
4F:→ patrick2dot0: Defaults to zero if not provided 12/27 14:00
5F:→ wheado: 好的,谢谢各位 12/27 18:16
6F:→ wheado: 所以如果我要随机生成,我必须确保给个资料的h_0要一样。 12/27 18:17