在调用 self.tracker 或 self.reduce 时分别运行 Tracker 或 Reduce 子模块的向前办法,该办法须要在样本列表上应用前向操作。在主函数的向前办法中,在不合的样本长进行自力的操作是有意义的,即为批处理中每个样本供给分别的缓冲区和客栈,因为所有受益于批处理履行的重度应用数学和须要 GPU 加快的操作都在 Tracker 和 Reduce 中进行。为了更干净地编写这些函数,我将应用一些 helper(稍后将定义)将这些样本列表转化成批处理张量(tensor),反之亦然。
我欲望 Reduce 模块主动批处理其参数以加快计算,然后解批处理(unbatch)它们,以便可以零丁推送和弹出。用于将每对左、右子短语表达组合成父短语(parent phrase)的实际组合函数是 TreeLSTM,它是通俗轮回神经收集单位 LSTM 的变型。该组合函数请求每个子短语的状况实际上由两个张量构成,一个隐蔽状况 h 和一个存储单位(memory cell)状况 c,而函数是应用在子短语的隐蔽状况操作的两个线性层(nn.Linear)和将线性层的结不雅与子短语的存储单位状况相浇忧⒛非线性组合函数 tree_lstm。在 SPINN 中,这种方法经由过程添加在 Tracker 的隐蔽状况下运行的第 3 个线性层进行扩大。

图 2:TreeLSTM 组合函数增长了第 3 个输入(x,在这种情况下为 Tracker 状况)。鄙人面所示的 PyTorch 实现中,5 组的三种线性变换(由蓝色、黑色和红色箭头的三元组表示)组合为三个 nn.Linear 模块,而 tree_lstm 函数履行位于框内的所有计算。图来自 Chen et al. (2016)。
推荐阅读
【义务编辑:wangxueyan TEL:(010)68476606】 >>>详细阅读
本文标题:如何用PyTorch实现递归神经网络?
地址:http://www.17bianji.com/lsqh/34965.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示