反向传播算法(BP):
前向传播通过训练数据和权重参数计算输出结果;反向传播通过导数链式法则计算损失函数对各参数的梯度,并根据梯度进行参数的更新。
1.前向传播
在前面的:全连接神经网络——前向传播中我们已经实现了神经网络的前向计算
这里就不过多介绍了,我们直接上代码:
import torch
import torch.nn as nn
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.layer=nn.Sequential(
nn.Linear(3*28*28,256),
nn.ReLU(),
nn.Linear(256,64),
nn.ReLU(),
nn.Linear(64, 10),
nn.Softmax(dim=1)
)
#前向传播
def forward(self,x):
return self.layer(x)#这里是返回前向计算的输出
if __name__ == '__main__':
net=Net()
x=torch.randn(2,3*28*28)
y=net.forward(x)
print(y.shape)#torch.Size([2