Pytorch 搭建一个简单神经网络

首先搭建一个神经网络:

import torch
import torch.nn.functional as F
from torch.autograd import Variable
import matplotlib.pyplot as plt
 
x = torch.unsqueeze(torch.linspace(-1,1,100),dim = 1)
#unsqueeze函数创建一个维度是1的向量
linspace函数生成在-1到1之间的100个数
 
y = x**2+0.2*torch.rand(x.size())
#得到x自乘的矩阵,然后加上同x矩阵相同的噪声
 
print(x,y,x.size())
#输出x,y矩阵,以及矩阵x的大小
 
#以上操作为初始化矩阵
 
x,y = Variable(x),Variable(y)
#将矩阵转化为 变量
 
class Net(torch.nn.Moudle):
#定义神经网络
	def __init__(self,n_feature,n_hidden,n_output):
	#初始化数组,参数分别是初始化信息,特征数,隐藏单元数,输出单元数
		super(Net,self).__init__()
		#此步骤是官方要求
		self.hidden = torch.nn.Linear(n_feature,n_hidden)
		#设置输入层到隐藏层的函数
		self.predict = torch.nn.Linear(n_hidden,n_output)
		#设置隐藏层到输出层的函数
 
	def forward(self,x):
	#定义向前传播函数
		x = F.relu(self.hidden(x))
        #给x加权成为a,用激励函数将a变成特征b
		x = self.predict(x)
        #给b加权,预测最终结果
		return x
net = Net(1,10,1)
#定义一个神经网络
print(net)
#查看各层之间的参数

以下是训练过程:

opt = torch.optim.SGD(net.parameters(),lr=0.5)
#设置学习率为0.5,用随机梯度下降发优化神经网络的参数
 
lossfunc = torch.nn.MSELoss()
#设置损失函数为均方损失函数,用来计算每次的误差
 
for t in range(100):
#进行100次的优化
	prediction = net(x)
	#得到预测值
	loss=lossfunc(prediction,y)
	#得到预测值与真实值之间的误差
	opt.zero_grad()
	#梯度清零
	loss.backward()
	#反向传播
	opt.step()
	#梯度优化
plt.ioff()
plt.show()

猜你喜欢

转载自blog.csdn.net/nineship/article/details/104159619