CBOW模型正向传播、矩阵乘积层实现

把矩阵乘积称为MatMul节点:

下面这个图表示矩阵乘积y=xW的计算图 。因为考虑了mini-batch 处理,假设x中保存了N个数据。此时x 、W、y 的形状分别是 N×D、D×H 、N×H 。

CBOW模型正向传播、矩阵乘积层实现_第1张图片

下面是推反向传播的数学式:

CBOW模型正向传播、矩阵乘积层实现_第2张图片

用代码表述MatMul层:params 中保存要学习的参数,梯度保存在 grads 中。

下面这句话是设置梯度的值,使用省略号可以固定 NumPy 数组的内存地址,覆盖 NumPy 数组的元素。a=b 和 a[…]=b 的区别:使用省略号时数据被覆盖,变量a指向的内存地址不变,在 a = b 的情况下,a 指向的内存地址转到和b一样了。

self.grads[0][...] = dW

你可能感兴趣的:(学习笔记,nlp,cbow)