演示代码如下

 import torch
from torch.autograd import Variable
import torch.nn.functional as F
import matplotlib.pyplot as plt
# make fake data
n_data = torch.ones(, )
x0 = torch.normal(*n_data, ) #每个元素(x,y)是从 均值=*n_data中对应位置的取值,标准差为1的正态分布中随机生成的
y0 = torch.zeros() # 给每个元素一个0标签
x1 = torch.normal(-*n_data, ) # 每个元素(x,y)是从 均值=-*n_data中对应位置的取值,标准差为1的正态分布中随机生成的
y1 = torch.ones() # 给每个元素一个1标签
x = torch.cat((x0, x1), ).type(torch.FloatTensor) # shape (, ) FloatTensor = -bit floating
y = torch.cat((y0, y1), ).type(torch.LongTensor) # shape (,) LongTensor = -bit integer
# torch can only train on Variable, so convert them to Variable
x, y = Variable(x), Variable(y) # draw the data
plt.scatter(x.data.numpy()[:, ], x.data.numpy()[:, ], c=y.data.numpy())#c是一个颜色序列 #plt.show()
#神经网络模块
net2 = torch.nn.Sequential(
torch.nn.Linear(,),
torch.nn.Dropout(0.2),#处理过拟合,当然这个模型本身很简单,不需要处理过拟合,这个只是一个演示
torch.nn.ReLU(),
torch.nn.Linear(,)
) plt.ion()#在Plt.ion和plt.ioff之间的代码,交互绘图
plt.show()
#神经网络优化器,主要是为了优化我们的神经网络,使他在我们的训练过程中快起来,节省社交网络训练的时间。
optimizer = torch.optim.SGD(net2.parameters(),lr = 0.01)#其实就是神经网络的反向传播,第一个参数是更新权重等参数,第二个对应的是学习率
loss_func = torch.nn.CrossEntropyLoss()#标签误差代价函数 for t in range():
out = net2(x)
loss = loss_func(out,y)#计算损失
optimizer.zero_grad()#梯度置零
loss.backward()#反向传播
optimizer.step()#计算结点梯度并优化,
if t % == :
net2.eval()#模型做预测的时候不需要dropout,切换为eval()模式
plt.cla()# Clear axis即清除当前图形中的之前的轨迹
prediction = torch.max(F.softmax(out), )[]#转换为概率,后面的一是最大值索引,如果为0则返回最大值
pred_y = prediction.data.numpy().squeeze()
target_y = y.data.numpy()
plt.scatter(x.data.numpy()[:, ], x.data.numpy()[:, ], c=pred_y, s=, lw=, cmap='RdYlGn')
accuracy = sum(pred_y == target_y) / .#求准确率
plt.text(1.5, -, 'Accuracy=%.2f' % accuracy, fontdict={'size': , 'color': 'red'})
plt.pause(0.1)
net2.train()#切花为训练模式 plt.ioff()
plt.show()

注意model.eval和model.train的使用

pytorch处理模型过拟合的更多相关文章

  1. [炼丹术]使用Pytorch搭建模型的步骤及教程

    使用Pytorch搭建模型的步骤及教程 我们知道,模型有一个特定的生命周期,了解这个为数据集建模和理解 PyTorch API 提供了指导方向.我们可以根据生命周期的每一个步骤进行设计和优化,同时更加 ...

  2. PyTorch保存模型与加载模型+Finetune预训练模型使用

    Pytorch 保存模型与加载模型 PyTorch之保存加载模型 参数初始化参 数的初始化其实就是对参数赋值.而我们需要学习的参数其实都是Variable,它其实是对Tensor的封装,同时提供了da ...

  3. Pytorch线性规划模型 学习笔记(一)

    Pytorch线性规划模型 学习笔记(一) Pytorch视频学习资料参考:<PyTorch深度学习实践>完结合集 Pytorch搭建神经网络的四大部分 1. 准备数据 Prepare d ...

  4. [Pytorch]深度模型的显存计算以及优化

    原文链接:https://oldpan.me/archives/how-to-calculate-gpu-memory 前言 亲,显存炸了,你的显卡快冒烟了! torch.FatalError: cu ...

  5. pytorch 建立模型的几种方法

    利用pytorch来构建网络模型,常用的有如下三种方式 前向传播网络具有如下结构: 卷积层-->Relu层-->池化层-->全连接层-->Relu层 对各Conv2d和Line ...

  6. Pytorch | BERT模型实现,提供转换脚本【横扫NLP】

    <谷歌终于开源BERT代码:3 亿参数量,机器之心全面解读>,上周推送的这篇文章,全面解读基于TensorFlow实现的BERT代码.现在,PyTorch用户的福利来了:一个名为Huggi ...

  7. 从头学pytorch(九):模型构造

    模型构造 nn.Module nn.Module是pytorch中提供的一个类,是所有神经网络模块的基类.我们自定义的模块要继承这个基类. import torch from torch import ...

  8. Pytorch 分割模型构建和训练【直播】2019 年县域农业大脑AI挑战赛---(四)模型构建和网络训练

    对于分割网络,如果当成一个黑箱就是:输入一个3x1024x1024 输出4x1024x1024. 我没有使用二分类,直接使用了四分类. 分类网络使用了SegNet,没有加载预训练模型,参数也是默认初始 ...

  9. 使用Pytorch搭建模型

    本来是只用Tenorflow的,但是因为TF有些Numpy特性并不支持,比如对数组使用列表进行切片,所以只能转战Pytorch了(pytorch是支持的).还好Pytorch比较容易上手,几乎完美复制 ...

随机推荐

  1. 【leetcode】328. Odd Even Linked List

    题目如下: Given a singly linked list, group all odd nodes together followed by the even nodes. Please no ...

  2. Hbase的读写流程

    HBase读写流程 1.HBase读数据流程 HRegionServer保存着meta表以及表数据,要访问表数据,首先Client先去访问zookeeper,从zookeeper里面获取meta表所在 ...

  3. python内置模块-random

    print(random.randint(1,10)) 生成随机整数,下限必须小于上限print(random.randrange(1,10)) 生成随机整数,参数为([start],stop,[st ...

  4. sqlmap用户手册详解【实用版】

    网上的sqlmap教程很多,但是我自己备忘小笔记都是在我的电脑上存着了,万一我要出去玩的时候,有点忘了,还得再百度翻翻,还不如发到我自己知乎上,忘了立马一看就记着了.虽说我的sqlmap备忘小笔记汇总 ...

  5. (转)OpenFire源码学习之十八:IOS离线推送

    转:http://blog.csdn.net/huwenfeng_2011/article/details/43458213 IOS离线推送 场景: 如果您有iOS端的APP,在会话聊天的时候,用户登 ...

  6. linux进阶之路(二):linux文件目录

    Linux的目录结构: Linux文件系统采用级层式的目录结构,最上层是根目录"/",在此目录下再创建其他目录. 树状的文件目录.再Linux世界,一切皆文件. /etc 所有系统 ...

  7. redis-trib.rb创建集群失败

    yum安装ruby: yum install -y rubyyum install -y rubygems //安装rubygemgem install redis //安装redis的接口包gem ...

  8. DLL 调用 对话框 以及 如何获取调用dll 应用程序(窗口程序)的窗口句柄

    1.一般创建需要的窗口,转换成相应的窗口类: 声明一个导出函数,来处理窗口的显示,如: CTest test; extern "C" __declspec(dllexport) v ...

  9. Centos 能ping通域名和公网ip但是网站不能够打开,服务器拒绝了请求。打开80端口解决。

    博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/10/29/centos-%E8%83%BDping%E9%80%9A%E5%9F%9F%E ...

  10. 天道神诀--IPSAN实现多链路以及多路径安装

    # linux6 环境需求 ISCSI服务端: 2张网卡,足够的磁盘空间 iscsi客户端: 2张网卡(与服务端网段相同) ISCSI服务端配置: 与1张网卡配置主要差别在于配置文件中的允许访问网段, ...