看了Movan大佬的文字教程让我对pytorch的基本使用有了一定的了解,下面简单介绍一下二分类用pytorch的基本实现!

希望详细的注释能够对像我一样刚入门的新手来说有点帮助!

import torch
import torch.nn.functional as F
import matplotlib.pyplot as plt
from torch.autograd import Variable n_data = torch.ones(100,2) #生成一个100行2列的全1矩阵
x0 = torch.normal(2*n_data,1)#利用100行两列的全1矩阵产生一个正态分布的矩阵均值和方差分别是(2*n_data,1)
y0 = torch.zeros(100)#给x0标定标签确定其分类0 x1 = torch.normal(-2*n_data,1) #利用同样的方法产生第二个数据类别
y1 = torch.ones(100)#但是x1数据类别的label就标定为1 x = torch.cat((x0,x1),0).type(torch.FloatTensor)#cat方法就是将两个数据样本聚合在一起(x0,x1),0这个属性就是第几个维度进行聚合
y = torch.cat((y0,y1),).type(torch.LongTensor)#y也是一样 x = Variable(x)#将它们装载到Variable的容器里
y = Variable(y)#将它们装载到Variable的容器里 #plt.scatter(x.data.numpy()[:,0],x.data.numpy()[:,1],c=y.data.numpy(),s=100,lw=0,cmap='RdYlGn')
#plt.show() class Net(torch.nn.Module):#开始搭建一个神经网络
def __init__(self,n_feature,n_hidden,n_output):#神经网络初始化,设置输入曾参数,隐藏曾参数,输出层参数
super(Net,self).__init__()#用super函数调用父类的通用初始化函数初始一下
self.hidden = torch.nn.Linear(n_feature,n_hidden)#设置隐藏层的输入输出参数,比如说输入是n_feature,输出是n_hidden
self.out = torch.nn.Linear(n_hidden,n_output)#同样设置输出层的输入输出参数 def forward(self,x):#前向计算过程
x = F.relu(self.hidden(x)) #样本数据经过隐藏层然后被Relu函数掰弯!
x = self.out(x)经过输出层返回
return x net = Net(n_feature=2,n_hidden=10,n_output=2) #two classification has two n_features#实例化一个网络结构
print(net) optimizer = torch.optim.SGD(net.parameters(),lr=0.02) #设置优化器参数,lr=0.002指的是学习率的大小
loss_func = torch.nn.CrossEntropyLoss()#损失函数设置为loss_function plt.ion() for t in range(100):
out = net(x)#100次迭代输出
loss = loss_func(out,y)#计算loss为out和y的差异 optimizer.zero_grad()#清除一下上次梯度计算的数值
loss.backward()#进行反向传播
optimizer.step()#最优化迭代 if t%2 == 0:
plt.cla()
prediction = torch.max(out,1)[1] ##返回每一行中最大值的那个元素,且返回其索引 torch.max()[1], 只返回最大值的每个索引
pred_y = prediction.data.numpy().squeeze()
target_y = y.data.numpy()
plt.scatter(x.data.numpy()[:,0],x.data.numpy()[:,1],c=pred_y,s=100,lw=0,cmap='RdYlGn')
accuracy = float((pred_y == target_y).astype(int).sum())/float(target_y.size)
plt.text(1.5,-4,'Accuracy=%.2f'%accuracy,fontdict={'size':20,'color':'red'})
plt.pause(0.1)
plt.ioff()
plt.show()

最终运行出来的结果在下面:

pytorch下对简单的数据进行分类(classification)的更多相关文章

  1. 你真的会玩SQL吗?简单的数据修改

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  2. ios下最简单的正则,RegexKitLite

    ios下最简单的正则,RegexKitLite 1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中.备用地址:http://www.coco ...

  3. 浅谈Vue不同场景下组件间的数据交流

    浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完 ...

  4. php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

    php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...

  5. 【Vue】浅谈Vue不同场景下组件间的数据交流

    浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完 ...

  6. Windows环境下ELK简单搭建记录

    前言 ELK已经是一套成熟的日志解决方案,虽然出现了好久,今日才终于研究了一下,不过是在windows平台上安装的. 搭建步骤 下载软件 安装软件 修改配置文件 启动软件 集成测试 下载软件 首先从官 ...

  7. (转)live555在Linux下最简单地实现实时流媒体点播

    通过Live555交叉编译后运行发现,上面实现的流媒体实时通过文件服务器的文件点播,没有相关的流媒体实现方式, 但在Linux下,可以通过某些技巧实现Live555服务器实时流媒体服务器,并且是傻瓜式 ...

  8. "大中台、小前台”新架构下,阿里大数据接下来怎么玩? (2016-01-05 11:39:50)

    "大中台.小前台”新架构下,阿里大数据接下来怎么玩?_炬鼎力_新浪博客 http://blog.sina.com.cn/s/blog_1427354e00102vzyq.html " ...

  9. pytorch:EDSR 生成训练数据的方法

    Pytorch:EDSR 生成训练数据的方法 引言 Winter is coming 正文 pytorch提供的DataLoader 是用来包装你的数据的工具. 所以你要将自己的 (numpy arr ...

随机推荐

  1. 2017.11.18 C语言的算法分析题目

    算法分析 1. 选定实验题目,仔细阅读实验要求,设计好输入输出,按照分治法的思想构思算法,选取合适的存储结构实现应用的操作. 2. 设计的结果应在Visual C++ 实验环境下实现并进行调试.(也可 ...

  2. url 解析

    最近在做一个单页应用,使用AngularJS来处理一些页内路由(哈希#后的路由变化).自然会要解析URL中的参数.使用AngularJS自带的方法$location.search();可以自动将参数整 ...

  3. ADO.net中常用的对象有哪些?

    ADO.net中常用的对象有哪些?分别描述一下. 答:Connection 数据库连接对像 Command 数据库命令 DataReader 数据读取器 DataSet 数据集 DataReader与 ...

  4. 第8条:覆盖equals时请遵守通用约定

    第8条:覆盖equals时请遵守通用约定 引言:尽管Object是一个具体类,但是设计它主要是为了拓展.它所有的非final方法(equals.hashCode.toString.clone和fina ...

  5. lintcode 110最小路径和

    最小路径和   描述 笔记 数据 评测 给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径. 注意事项 你在同一时间只能向下或者向右移动一步 您在真实的面试中是否遇到过 ...

  6. mariadb多实例实现

    环境:centos7,yum 安装mariadb5.5 mkdir /mysqldb/{3306,3307.3308}/{etc,socket,pid,log,data} -pv chown -R m ...

  7. 介绍hadoop中的hadoop和hdfs命令

    有些hive安装文档提到了hdfs dfs -mkdir ,也就是说hdfs也是可以用的,但在2.8.0中已经不那么处理了,之所以还可以使用,是为了向下兼容. 本文简要介绍一下有关的命令,以便对had ...

  8. SQLSERVER 数据库恢复挂起的解决办法

    如果你的数据库还处于挂起状态,请把我下面代码的test改为你的库名,然后执行完,刷新就正常了: USE masterGOALTER DATABASE test SET SINGLE_USERGOALT ...

  9. 中通快递股份有限公司.net高级面试题

    中通快递分布式技术开发   gc垃圾回收原理 .net中,托管代码的内存管理是自动的,由GC进行管理,而对于非托管代码,则需要.net手动处理 CLR运行时,内存分为:托管堆和栈,其中栈用于存储值类型 ...

  10. 死锁-Java代码示例

    class MyThread implements Runnable{ private Object o1 = new Object(); private Object o2 = new Object ...