介绍
本篇文章为大家展示了如何在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 ()
可视化如下看一下:
<强> 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”) ),才能 )
效果如下:
<强>逻辑回归处理强>
输入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处理简单分类