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

  介绍

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

pytorch的优点

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

<强>环境

系统:赢得10
显卡:gtx965m
cpu: i7 - 6700总部
python 3.61

0.3 pytorch <强>包引用

import 火炬   得到torch.autograd  import 变量   import  torch.nn.functional  as  F   import  numpy  as  np   import  visdom   import 时间   得到torch  import  nn, optim

<强>数据准备

use_gpu =,真的   时间=ones  np.ones ((500 2))   时间=x1  torch.normal (6 * torch.from_numpy(的),2)   时间=y1  torch.zeros (500),   时间=x2  torch.normal (6 * torch.from_numpy (1 * [1]), 2)   时间=y2  y1  + 1   时间=x3  torch.normal (6 * torch.from_numpy(的),2)   时间=y3  y1  + 2   时间=x4  torch.normal (6 * torch.from_numpy (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(0255(4,3)), #颜色随机   #线图用来观察loss 和准确性   时间=line  viz.line (X=np.arange (1、10、1),, Y=np.arange (1 10 1))   #散点图用来观察分类变化   时间=scatter  viz.scatter (   X=X,才能   ,,Y=Y + 1,,   选择=dict(才能   ,,,markercolor =,颜色,   ,,,marksize =, 5,   传说,,,=(“0”,“1”、“2”、“3”)))   # text 窗口用来显示loss  accuracy ,时间   时间=text  viz.text (“FOR  TEST")   #散点图做对比   viz.scatter (   X=X,才能   ,,Y=Y + 1,,   选择=dict(才能   ,,,markercolor =,颜色,   ,,,marksize =, 5,   传说,,,=(“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 才能:打印(“# # # # # # # # # # # # # # #使用cpu # # # # # # # # # # # # # #“)   其他:   gpu_status 才能=False   打印才能(“# # # # # # # # # # # # # # #使用cpu # # # # # # # # # # # # # #“)

优化器和损失函数:

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 拷贝范围(2000):   if 才能;gpu_status:   ,,,train_x =,变量(x) .cuda ()   ,,,train_y =,变量(y) .cuda ()   其他的才能:   ,,,train_x =,变量(x)   ,,,train_y =,变量(y)   #,才能out =,净(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 才能=,总和(pred_y ==train_y.data)/浮动(2000.0)   loss_point.append才能(loss.data [0])   accuracy_point.append才能(精度)   time_point.append才能(time.time () -start_time)   print(才能“[{}/{}],|,accuracy :, {: .3f}, |, loss :, {: .3f}, |, time :, {: .2f},“.format (t  +, 1, 2000,,准确性,,loss.data [0],   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,time.time(),安康;start_time))   null   null   null   null   null   null   null   null   null   null   null   null   null   null

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