最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch + visdom 處理簡單分類問題的示例

 更新時間:2018年06月04日 15:04:26   作者:泛泛之素  
這篇文章主要介紹了pytorch + visdom 處理簡單分類問題的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

環(huán)境

系統(tǒng) : 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

數(shù)據(jù)準備

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()  

可視化如下看一下:

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"]
  ),
)

效果如下:

邏輯回歸處理

輸入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##############")

優(yōu)化器和loss函數(shù):

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"]))
   #這里的數(shù)據(jù)如果用gpu跑會出錯,要把數(shù)據(jù)換成cpu的數(shù)據(jù) .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("<h3 align='center' style='color:blue'>accuracy : {}</h3><br><h3 align='center' style='color:pink'>"
       "loss : {:.4f}</h3><br><h3 align ='center' style='color:green'>time : {:.1f}</h3>"
       .format(accuracy,loss.data[0],time.time()-start_time),win =text)

我們先用cpu運行一次,結果如下:

然后用gpu運行一下,結果如下:

發(fā)現(xiàn)cpu的速度比gpu快很多,但是我聽說機器學習應該是gpu更快啊,百度了一下,知乎上的答案是:

我的理解就是gpu在處理圖片識別大量矩陣運算等方面運算能力遠高于cpu,在處理一些輸入和輸出都很少的,還是cpu更具優(yōu)勢。

添加神經(jīng)層:

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

添加一層10單元神經(jīng)層,看看效果是否會有所提升:

使用cpu:

 

使用gpu:

比較觀察,似乎并沒有什么區(qū)別,看來處理簡單分類問題(輸入,輸出少)的問題,神經(jīng)層和gpu不會對機器學習加持。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python 離線工作環(huán)境搭建的方法步驟

    Python 離線工作環(huán)境搭建的方法步驟

    這篇文章主要介紹了Python 離線工作環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python中五種實現(xiàn)字符串反轉的方法

    Python中五種實現(xiàn)字符串反轉的方法

    這篇文章主要介紹了Python中五種實現(xiàn)字符串反轉的方法,編寫一個函數(shù),其作用是將輸入的字符串反轉過來。下面文章關于其詳細介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Python德勞內(nèi)三角剖分詳解

    Python德勞內(nèi)三角剖分詳解

    這篇文章主要為大家詳細介紹了Python中德勞內(nèi)三角剖分的相關知識,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-04-04
  • Python實現(xiàn)UDP程序通信過程圖解

    Python實現(xiàn)UDP程序通信過程圖解

    這篇文章主要介紹了Python實現(xiàn)UDP程序通信過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • python多線程同步之文件讀寫控制

    python多線程同步之文件讀寫控制

    這篇文章主要為大家詳細介紹了python多線程同步之文件讀寫控制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Scrapy模擬登錄趕集網(wǎng)的實現(xiàn)代碼

    Scrapy模擬登錄趕集網(wǎng)的實現(xiàn)代碼

    這篇文章主要介紹了Scrapy模擬登錄趕集網(wǎng)的實現(xiàn)代碼,本文通過代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 利用Python來控制終端打印字體的顏色和格式

    利用Python來控制終端打印字體的顏色和格式

    使用python編程時,改變控制臺或終端中輸出字體的顏色和格式,會顯著提升代碼質量,快速幫助我們定位問題和鎖定重要輸出,但是一般情況下,python控制臺輸出的字體默認為白色,所以這篇文章給大家介紹了如何利用Python控制終端打印字體的顏色和格式,需要的朋友可以參考下
    2024-06-06
  • django restframework serializer 增加自定義字段操作

    django restframework serializer 增加自定義字段操作

    這篇文章主要介紹了django restframework serializer 增加自定義字段操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python實現(xiàn)生成簡單的Makefile文件代碼示例

    Python實現(xiàn)生成簡單的Makefile文件代碼示例

    這篇文章主要介紹了Python實現(xiàn)生成簡單的Makefile文件代碼示例,本文給出了兩段實現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • Python 選擇排序中的樹形選擇排序

    Python 選擇排序中的樹形選擇排序

    這篇文章主要介紹了Python 選擇排序中的樹形選擇排序,選擇排序主要包括三個排序,分別是簡單選擇排序、樹形選擇排序和堆排序,本文主要講解的是樹形選擇排序,下面詳細內(nèi)容,需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11

最新評論

东阳市| 晋州市| 平阳县| 文水县| 肥城市| 林口县| 沧源| 义乌市| 襄汾县| 布尔津县| 荆州市| 新郑市| 增城市| 荆州市| 岳阳县| 莱阳市| 锦屏县| 富源县| 广水市| 临泽县| 大新县| 项城市| 和硕县| 河南省| 嘉善县| 罗源县| 江陵县| 临海市| 松溪县| 蒲江县| 荆门市| 墨脱县| 从化市| 尉氏县| 浑源县| 罗城| 康马县| 抚顺县| 四子王旗| 平塘县| 新兴县|