温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在pytorch中使用 visdom 处理简单分类

发布时间:2021-05-11 18:09:37 来源:亿速云 阅读:285 作者:Leah 栏目:开发技术

本篇文章为大家展示了如何在pytorch中使用 visdom 处理简单分类,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

pytorch的优点

1.PyTorch是相当简洁且高效快速的框架;2.设计追求最少的封装;3.设计符合人类思维,它让用户尽可能地专注于实现自己的想法;4.与google的Tensorflow类似,FAIR的支持足以确保PyTorch获得持续的开发更新;5.PyTorch作者亲自维护的论坛 供用户交流和求教问题6.入门简单

环境

系统 : win 10
显卡:gtx965m
cpu :i7-6700HQ
python 3.61
pytorch 0.3

包引用

import torch from torch.autograd import Variable import torch.nn.functional as F import numpy as np import visdom import time from torch import nn,optim

数据准备

use_gpu = True ones = np.ones((500,2)) x1 = torch.normal(6*torch.from_numpy(ones),2) y1 = torch.zeros(500)  x2 = torch.normal(6*torch.from_numpy(ones*[-1,1]),2) y2 = y1 +1 x3 = torch.normal(-6*torch.from_numpy(ones),2) y3 = y1 +2 x4 = torch.normal(6*torch.from_numpy(ones*[1,-1]),2) y4 = y1 +3  x = torch.cat((x1, x2, x3 ,x4), 0).float() y = torch.cat((y1, y2, y3, y4), ).long()

可视化如下看一下:

如何在pytorch中使用 visdom 处理简单分类

visdom可视化准备

先建立需要观察的windows

viz = visdom.Visdom() colors = np.random.randint(0,255,(4,3)) #颜色随机 #线图用来观察loss 和 accuracy line = viz.line(X=np.arange(1,10,1), Y=np.arange(1,10,1)) #散点图用来观察分类变化 scatter = viz.scatter(   X=x,   Y=y+1,    opts=dict(     markercolor = colors,     marksize = 5,     legend=["0","1","2","3"]),) #text 窗口用来显示loss 、accuracy 、时间 text = viz.text("FOR TEST") #散点图做对比 viz.scatter(   X=x,   Y=y+1,    opts=dict(     markercolor = colors,     marksize = 5,     legend=["0","1","2","3"]   ), )

效果如下:

如何在pytorch中使用 visdom 处理简单分类

逻辑回归处理

输入2,输出4

logstic = nn.Sequential(   nn.Linear(2,4) )

gpu还是cpu选择:

if use_gpu:   gpu_status = torch.cuda.is_available()   if gpu_status:     logstic = logstic.cuda()     # net = net.cuda()     print("###############使用gpu##############")   else : print("###############使用cpu##############") else:   gpu_status = False   print("###############使用cpu##############")

优化器和loss函数:

loss_f = nn.CrossEntropyLoss() optimizer_l = optim.SGD(logstic.parameters(), lr=0.001)

训练2000次:

start_time = time.time() time_point, loss_point, accuracy_point = [], [], [] for t in range(2000):   if gpu_status:     train_x = Variable(x).cuda()     train_y = Variable(y).cuda()   else:     train_x = Variable(x)     train_y = Variable(y)   # out = net(train_x)   out_l = logstic(train_x)   loss = loss_f(out_l,train_y)   optimizer_l.zero_grad()   loss.backward()   optimizer_l.step()

训练过成观察及可视化:

if t % 10 == 0:   prediction = torch.max(F.softmax(out_l, 1), 1)[1]   pred_y = prediction.data   accuracy = sum(pred_y ==train_y.data)/float(2000.0)   loss_point.append(loss.data[0])   accuracy_point.append(accuracy)   time_point.append(time.time()-start_time)   print("[{}/{}] | accuracy : {:.3f} | loss : {:.3f} | time : {:.2f} ".format(t + 1, 2000, accuracy, loss.data[0],                                   time.time() - start_time))   viz.line(X=np.column_stack((np.array(time_point),np.array(time_point))),        Y=np.column_stack((np.array(loss_point),np.array(accuracy_point))),        win=line,        opts=dict(legend=["loss", "accuracy"]))    #这里的数据如果用gpu跑会出错,要把数据换成cpu的数据 .cpu()即可   viz.scatter(X=train_x.cpu().data, Y=pred_y.cpu()+1, win=scatter,name="add",         opts=dict(markercolor=colors,legend=["0", "1", "2", "3"]))   viz.text("<h4 align='center' style='color:blue'>accuracy : {}</h4><br><h4 align='center' style='color:pink'>"        "loss : {:.4f}</h4><br><h4 align ='center' style='color:green'>time : {:.1f}</h4>"        .format(accuracy,loss.data[0],time.time()-start_time),win =text)

我们先用cpu运行一次,结果如下:

如何在pytorch中使用 visdom 处理简单分类

然后用gpu运行一下,结果如下:

如何在pytorch中使用 visdom 处理简单分类

发现cpu的速度比gpu快很多,但是我听说机器学习应该是gpu更快啊,百度了一下,知乎上的答案是:

如何在pytorch中使用 visdom 处理简单分类

我的理解就是gpu在处理图片识别大量矩阵运算等方面运算能力远高于cpu,在处理一些输入和输出都很少的,还是cpu更具优势。

添加神经层:

net = nn.Sequential(   nn.Linear(2, 10),   nn.ReLU(),  #激活函数   nn.Linear(10, 4) )

添加一层10单元神经层,看看效果是否会有所提升:

使用cpu:

如何在pytorch中使用 visdom 处理简单分类 

使用gpu:

如何在pytorch中使用 visdom 处理简单分类

上述内容就是如何在pytorch中使用 visdom 处理简单分类,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI