基本搭建
import torch
class Net(torch.nn.Module): # net继承module模块
def __init__(self,in_features,in_hidden,in_output): # __init__搭建这些层需要的信息
super(Net,self).__init__() # 官方步骤
self.hidden = torch.nn.Linear(in_features, in_hidden, in_output) # 隐藏层的神经元个数。。。
self.predict = torch.nn.Linear(in_hidden, in_output) # 预测层
def forward(self,x): # forward 神经网络前向传递的过程,前面搭的流程图在这里实现。真正的搭建过程。x:输入信息
x = F.relu(self.hidden(x)) # 激活信息
x = self.predict(x)
return x
#搭建完就开始定义我们的Net
net = Net(1,10,1)
print(net)
print出来的样子:
优化我们的神经网络
# 优化神经网络,所以就要传入我们的参数
optimizer = torch.optim.SGD(net.parameters(),lr=0.5)
loss_func = torch.nn.MSELoss()
for t in range(100):
prediction = net(x)
loss = loss_func(prediction,y)
optimizer.zero_grad() #梯度清零,防爆炸(因为每一次计算梯度都会保留在net里面)
loss.backward() #反向传递,计算其节点梯度
optimizer.step() #优化我的梯度