![图片[1]-4.6 输出层的反向传播和实现-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-252.png)
![图片[2]-4.6 输出层的反向传播和实现-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-253.png)
简化得:
![图片[3]-4.6 输出层的反向传播和实现-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-254.png)
在代码中可以实现为一个类SoftmaxWithLoss:
class SoftmaxWithLoss:
def __init__(self):
self.loss = None
self.y = None # softmax的输出
self.t = None # 监督数据
def forward(self, x, t):
self.t = t
self.y = softmax(x)
self.loss = cross_entropy_error(self.y, self.t)
return self.loss
def backward(self, dout=1):
batch_size = self.t.shape[0]
if self.t.size == self.y.size: # 监督数据是one-hot-vector的情况
dx = (self.y - self.t) / batch_size
else:
dx = self.y.copy()
dx[np.arange(batch_size), self.t] -= 1
dx = dx / batch_size
return dx
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END















请登录后查看评论内容