神经网络与pytorch实战PDF,利用pytorch搭建神经网络
本文主要介绍了基于Pytorch的神经网络回归的实现。通过示例代码非常详细的介绍了一下,有一定的参考价值,感兴趣的朋友可以参考一下。
00-1010 1.导言2。神经网络构建2.1准备工作2.2网络构建2.3训练网络3。效果4。完全码
目录
我们之前介绍过神经网络的基础知识。神经网络的主要功能是预测和分类。现在让我们建立第一个拟合回归的神经网络。
1.引言
2.神经网络搭建
要建立一个拟合的神经网络并进行绘制,我们需要使用python的几个库。
进口火炬
导入torch.nn.functional as F
将matplotlib.pyplot作为plt导入
x=torch . unsqueeze(torch . Lin space(-5,5,100),dim=1)
y=x . pow(3)0.2 * torch . rand(x . size())
既然是拟合,当然需要一些数据。我在区间中选择了100个等距点,并把它们排列成三次函数的图像。
2.1 准备工作
我们定义了一个类,它继承了封装在torch中的一个模块。我们首先分别确定输入层、隐藏层和输出层中神经元的数量。继承父类后,我们使用。nn。torch中的Linear()函数将输入层线性变换到隐藏层,隐藏层也被线性变换并传输到输出层predict。接下来,我们定义正向传播函数forward(),并使用relu()作为激活函数。
class Net(torch.nn.Module):
def __init__(self,n_feature,n_hidden,n_output):
超级(净,自)。__init__()
self . hidden=torch . nn . linear(n _ feature,n_hidden)
self . predict=torch . nn . linear(n _ hidden,n_output)
定义向前(自身,x):
x=F.relu(self.hidden(x))
返回自我预测(x)
net=Net(1,20,1)
打印(网络)
optimizer=torch . optim . Adam(net . parameters(),lr=0.2)
loss _ func=torch . nn . ms loss()
构建了网络的框架,然后我们引入三层对应的神经元数量,然后定义优化器。这里我选择Adam和随机梯度下降(SGD),因为它是SGD的优化版,大多数情况下效果比SGD好。我们必须引入这个神经网络的参数,并定义学习率。学习率通常小于1,需要凭经验调试。最后,我们选择均方差(MSE)方法来计算损失。
2.2 搭建网络
接下来,我们必须训练我们已经建立的神经网络。我训练过2000轮(epoch),先更新结果预测再计算损失,然后清除梯度,再根据损失反向传播,最后优化找到最佳拟合曲线。
对于范围(2000):内的t
预测=净值(x)
loss=loss_func(预测,y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
2.3 训练网络
使用下面的绘图代码来显示效果。
对于范围(2000):内的t
预测=净值(x)
loss=loss_func(预测,y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
如果t % 5==0:
plt.cla()
plt.scatter(x.data.numpy(),y.data.numpy(),s=10)
plt.plot(x.data.numpy(),prediction.data.numpy(), r-,lw=2)
plt.text(2,-100, Loss=%.4f % loss.data.numpy(),fontdict={size: 10, color: red})
plt暂停(0.1)
plt.ioff()
plt.show()
最终结果:
3.效果
进口火炬
导入torch.nn.functional as F
将matplotlib.pyplot作为plt导入
x=torch . unsqueeze(torch . Lin space(-5,5,100),dim=1)
y=x . pow(3)0.2 * torch . rand(x . size())
class Net(torch.nn.Module):
def __init__(self,n_feature,n_hidden,n_output):
超级(净,自)。__init__()
self . hidden=torch . nn . linear(n _ feature,n_hidden)
self . predict=torch . nn . linear(n _ hidden,n_output)
定义向前(自身,x):
x=F.relu(self.hidden(x))
返回自我预测(x)
net=Net(1,20,1)
打印(网络)
optimizer=torch . optim . Adam(net . parameters(),lr=0.2)
loss _ func=torch . nn . ms loss()
植物离子()
对于范围(2000):内的t
预测=净值(x)
损耗=损耗函数(预测,y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
如果t % 5==0:
plt.cla()
plt.scatter(x.data.numpy(),y.data.numpy(),s=10)
plt.plot(x.data.numpy(),prediction.data.numpy(), r-,lw=2)
plt.text(2,-100, Loss=%.4f % loss.data.numpy(),fontdict={size: 10, color: red})
血小板计数暂停(0.1)
plt.ioff()
plt.show()
到此这篇关于基于框架的神经网络之回归的实现的文章就介绍到这了,更多相关框架回归内容请搜索盛行信息技术软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行信息技术软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。