本次用pytroch来实现一个简单的回归分析,也借此机会来熟悉pytorch的一些基本操作。
<强> 1。建立数据集强>
进口火炬 从火炬。autograd导入变量 进口matplotlib。pyplot作为plt # torch.linspace(1100)表示返回一个一维张量,包含在区间1到1上均匀间隔的100个点; # torch.unsqueeze(输入,昏暗的=1)表示转换维度 x=torch.unsqueeze(火炬。linspace(1, - 1, 100),暗=1) #生成的y值为x的平方加上随机数 y=x.pow (2) + 0.2 * torch.rand (x.size ()) #用变量来修饰这些数据张量 x, y=torch.autograd.Variable (x)变量(y) #画的图 y.data.numpy plt.scatter (x.data.numpy () () plt.show () >之前<强> 2。构建神经网络强>
进口火炬 进口torch.nn。功能是f#激励函数都在这 类网(torch.nn.Module): #继承火炬的模块 def __init__(自我、n_feature n_hidden n_output): 超级(净,自我). __init__() #继承__init__功能 #定义每层用什么样的形式 自我。隐藏=torch.nn。线性(n_feature n_hidden) #隐藏层线性输出 自我。预测=torch.nn。线性(n_hidden n_output) #输出层线性输出 def向前(自我,x): #这同时也是模块中向前的功能 #正向传播输入值,神经网络分析出输出值 x=F.relu (self.hidden (x) #激励函数(隐藏层的线性值) x=self.predict (x) #输出值 返回x 网=净(n_feature=1, n_hidden=10, n_output=1) 打印(净)#净的结构 ”“” 净( (隐藏):线性(1→10) (预测):线性(10→1) ) ”“” >之前<强> 3。实时绘图查看回归效果强>
进口matplotlib。pyplot作为plt plt.ion() #打开交互绘图模式(便于实时显示图像变化) plt.show () 优化器=torch.optim.SGD (net.parameters (), lr=0.1) #定义优化器和学习率 loss_func=torch.nn.MSELoss() #定义损失函数 t的范围(200): 预测净(x)=损失=loss_func(预测,y) optimizer.zero_grad () loss.backward () optimizer.step () 如果t % 5==0: plt.cla () y.data.numpy plt.scatter (x.data.numpy()() #画散点图 prediction.data.numpy plt.plot (x.data.numpy () ()、r -, lw=5) #画拟合曲线 plt.text(0.5, 0, '损失=%。4 f ' %的损失。数据[0],fontdict={“大小”:20,“颜色”:“红色”})#显示损失数的值 plt.pause (0.1) #如果在脚本中使用离子()命令开启了交互模式,没有使用ioff()关闭的话,则图像会一闪而过,并不会常留。要想防止这种情况,需要在plt.show()之前加上ioff()命令。 plt.ioff () plt.show () >之前运行终态效果图如下:
以上这篇pytorch模拟关系拟合——回归实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
pytorch模拟关系拟合——回归实例