def predict(self, x):
for layer in self.layers:
x = layer.forward(x)
return x
def forward(self, x, t):
score = self.predict(x)
loss = self.loss_layer.forward(score, t)
return loss
def backward(self, dout=1):
dout = self.loss_layer.backward(dout)
for layer in reversed(self.layers):
dout = layer.backward(dout)
return dout
predict(x) 方法功能:输入数据 x,通过神经网络的每一层逐层计算,输出最终的预测结果(得分/ logits)。
流程:
self.layers)。x 依次调用每一层的 forward 方法,得到当前层的输出,并作为下一层的输入。score)。用途:
用于推理阶段(如测试或部署),不计算损失,仅输出预测值。
forward(x, t) 方法功能:完成完整的前向传播,并计算损失(用于训练)。
参数:
x:输入数据。t:目标标签(ground truth)。流程:
predict(x) 得到预测值 score。score 和标签 t 传入损失层(self.loss_layer),调用其 forward 方法计算损失值(如交叉熵损失、均方误差等)。loss。用途:
训练时使用,前向传播后需接反向传播(backward)来更新权重。
backward(dout=1) 方法dout:梯度初始值(默认为 1,通常从损失层开始反向传播)。backward 方法,计算损失对最后一层输出的梯度 dout。reversed(self.layers)),依次调用每一层的 backward 方法,计算并传递梯度。backward 会计算: