本文共 2787 字,大约阅读时间需要 9 分钟。
在我们搭建神经网络之前,我们需要明确我们的数据集,明确我们的训练的目的是什么。
一些数据集: 制造一个加入了一些噪声的y=x*x的数据点集: 1.1打开pycharm: 新建一个test工程:my project右键my__project,如下图:
搭建好工程我们需要去配置一下:
就是之前第一讲的setting那里了,设置完OK! 将以下代码写入test1:import torchimport torch.nn.functional as Fimport matplotlib;matplotlib.use('TkAgg')import os;os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"import matplotlib.pyplot as pltx =torch.unsqueeze(torch.linspace(-1,1,100),dim=1)y=x.pow(2)+ 0.2*torch.rand(x.size()) # *0.2是为了减少噪声plt.scatter(x.data.numpy(),y.data.numpy())plt.show()
点击右上角播放键一样的按钮进行运行:
1、出现 Microsoft Visual C++ Redistributable is not installed, this may lead to the DLL load fail,按照提示下载链接里面的安装就好了 2、出现name ‘plt’ is not defined,代码中加入 import os import matplotlib.pyplot as plt ps:已经在上面的代码里改过了。 结果: 加入*0.2以后的结果:import torchimport torch.nn.functional as Fimport matplotlib;matplotlib.use('TkAgg')import os;os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"import matplotlib.pyplot as pltx =torch.unsqueeze(torch.linspace(-1,1,100),dim=1)y=x.pow(2)+ torch.rand(x.size()) # *0.2是为了减少噪声#plt.scatter(x.data.numpy(),y.data.numpy())#plt.show()class Net(torch.nn.Module): def __init__(self,n_features,n_hidden,n_output):#这里的def __init__ init前后的_是各有两个的 super().__init__() self.hidden = torch.nn.Linear(n_features,n_hidden) self.predict = torch.nn.Linear(n_hidden,n_output) def forward(self,x): x = F.relu(self.hidden(x)) x = self.predict(x) return xnet = Net(1,10,1)print(net)#打印网络信息
结果:
代码:
import torchimport torch.nn.functional as Fimport matplotlib;matplotlib.use('TkAgg')import os;os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"import matplotlib.pyplot as pltx =torch.unsqueeze(torch.linspace(-1,1,100),dim=1)y=x.pow(2)+ torch.rand(x.size()) # *0.2是为了减少噪声#plt.scatter(x.data.numpy(),y.data.numpy())#plt.show()class Net(torch.nn.Module): def __init__(self,n_features,n_hidden,n_output): super().__init__() self.hidden = torch.nn.Linear(n_features,n_hidden) self.predict = torch.nn.Linear(n_hidden,n_output) def forward(self,x): x = F.relu(self.hidden(x)) x = self.predict(x) return xnet = Net(1,10,1)#print(net)#打印网络信息optimizer = torch.optim.SGD(net.parameters(),lr = 0.2)loss_func = torch.nn.MSELoss()for t in range(500): prediction = net.forward(x) loss = loss_func(prediction,y) optimizer.zero_grad() loss.backward() optimizer.step() if t%5 ==0: plt.cla() plt.scatter(x.data.numpy(), y.data.numpy()) plt.plot(x.data.numpy(),prediction.data.numpy(),'r-',lw=5) print("loss:",float(loss.data)) plt.pause(0.1)plt.ioff()plt.show()
结果:
我们发现,在训练结果中展示的,LOSS损失函数值通过迭代次数的增加在不断下降,根据图像展示的,我们的线条也在随着迭代次数的增加,不断逼近y = x^2。
这就是神经网络训练数据的一整个过程。小白老师推荐网站:
附: 此笔记仅用于个人记录、学习使用。转载地址:http://xjexi.baihongyu.com/