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

pytorch教程網(wǎng)絡(luò)和損失函數(shù)的可視化代碼示例

 更新時間:2021年09月07日 14:47:11   作者:xz1308579340  
這篇文章主要介紹了pytorch教程中網(wǎng)絡(luò)和損失函數(shù)的可視化,文中附含詳細的代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助

1.效果

在這里插入圖片描述

2.環(huán)境

1.pytorch
2.visdom
3.python3.5

3.用到的代碼

# coding:utf8
import torch
from torch import nn, optim   # nn 神經(jīng)網(wǎng)絡(luò)模塊 optim優(yōu)化函數(shù)模塊
from torch.utils.data import DataLoader
from torch.autograd import Variable
from torchvision import transforms, datasets
from visdom import Visdom  # 可視化處理模塊
import time
import numpy as np
# 可視化app
viz = Visdom()
# 超參數(shù)
BATCH_SIZE = 40
LR = 1e-3
EPOCH = 2
# 判斷是否使用gpu
USE_GPU = True
if USE_GPU:
    gpu_status = torch.cuda.is_available()
else:
    gpu_status = False
transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,))])
# 數(shù)據(jù)引入
train_dataset = datasets.MNIST('../data', True, transform, download=False)
test_dataset = datasets.MNIST('../data', False, transform)
train_loader = DataLoader(train_dataset, BATCH_SIZE, True)
# 為加快測試,把測試數(shù)據(jù)從10000縮小到2000
test_data = torch.unsqueeze(test_dataset.test_data, 1)[:1500]
test_label = test_dataset.test_labels[:1500]
# visdom可視化部分數(shù)據(jù)
viz.images(test_data[:100], nrow=10)
#viz.images(test_data[:100], nrow=10)
# 為防止可視化視窗重疊現(xiàn)象,停頓0.5秒
time.sleep(0.5)
if gpu_status:
    test_data = test_data.cuda()
test_data = Variable(test_data, volatile=True).float()
# 創(chuàng)建線圖可視化窗口
line = viz.line(np.arange(10))
# 創(chuàng)建cnn神經(jīng)網(wǎng)絡(luò)
class CNN(nn.Module):
    def __init__(self, in_dim, n_class):
        super(CNN, self).__init__()
        self.conv = nn.Sequential(
            # channel 為信息高度 padding為圖片留白 kernel_size 掃描模塊size(5x5)
            nn.Conv2d(in_channels=in_dim, out_channels=16,kernel_size=5,stride=1, padding=2),
            nn.ReLU(),
            # 平面縮減 28x28 >> 14*14
            nn.MaxPool2d(kernel_size=2),
            nn.Conv2d(16, 32, 3, 1, 1),
            nn.ReLU(),
            # 14x14 >> 7x7
            nn.MaxPool2d(2)
        )
        self.fc = nn.Sequential(
            nn.Linear(32*7*7, 120),
            nn.Linear(120, n_class)
        )
    def forward(self, x):
        out = self.conv(x)
        out = out.view(out.size(0), -1)
        out = self.fc(out)
        return out
net = CNN(1,10)
if gpu_status :
    net = net.cuda()
    #print("#"*26, "使用gpu", "#"*26)
else:
    #print("#" * 26, "使用cpu", "#" * 26)
    pass
# loss、optimizer 函數(shù)設(shè)置
loss_f = nn.CrossEntropyLoss()
optimizer = optim.Adam(net.parameters(), lr=LR)
# 起始時間設(shè)置
start_time = time.time()
# 可視化所需數(shù)據(jù)點
time_p, tr_acc, ts_acc, loss_p = [], [], [], []
# 創(chuàng)建可視化數(shù)據(jù)視窗
text = viz.text("<h1>convolution Nueral Network</h1>")
for epoch in range(EPOCH):
    # 由于分批次學習,輸出loss為一批平均,需要累積or平均每個batch的loss,acc
    sum_loss, sum_acc, sum_step = 0., 0., 0.
    for i, (tx, ty) in enumerate(train_loader, 1):
        if gpu_status:
            tx, ty = tx.cuda(), ty.cuda()
        tx = Variable(tx)
        ty = Variable(ty)
        out = net(tx)
        loss = loss_f(out, ty)
        #print(tx.size())
        #print(ty.size())
        #print(out.size())
        sum_loss += loss.item()*len(ty)
        #print(sum_loss)
        pred_tr = torch.max(out,1)[1]
        sum_acc += sum(pred_tr==ty).item()
        sum_step += ty.size(0)
        # 學習反饋
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        # 每40個batch可視化一下數(shù)據(jù)
        if i % 40 == 0:
            if gpu_status:
                test_data = test_data.cuda()
            test_out = net(test_data)
            print(test_out.size())
            # 如果用gpu運行out數(shù)據(jù)為cuda格式需要.cpu()轉(zhuǎn)化為cpu數(shù)據(jù) 在進行比較
            pred_ts = torch.max(test_out, 1)[1].cpu().data.squeeze()
            print(pred_ts.size())
            rightnum = pred_ts.eq(test_label.view_as(pred_ts)).sum().item()
            #rightnum =sum(pred_tr==ty).item()
            #  sum_acc += sum(pred_tr==ty).item()
            acc =  rightnum/float(test_label.size(0))
            print("epoch: [{}/{}] | Loss: {:.4f} | TR_acc: {:.4f} | TS_acc: {:.4f} | Time: {:.1f}".format(epoch+1, EPOCH,
                                    sum_loss/(sum_step), sum_acc/(sum_step), acc, time.time()-start_time))
            # 可視化部分
            time_p.append(time.time()-start_time)
            tr_acc.append(sum_acc/sum_step)
            ts_acc.append(acc)
            loss_p.append(sum_loss/sum_step)
            viz.line(X=np.column_stack((np.array(time_p), np.array(time_p), np.array(time_p))),
                     Y=np.column_stack((np.array(loss_p), np.array(tr_acc), np.array(ts_acc))),
                     win=line,
                     opts=dict(legend=["Loss", "TRAIN_acc", "TEST_acc"]))
            # visdom text 支持html語句
            viz.text("<p style='color:red'>epoch:{}</p><br><p style='color:blue'>Loss:{:.4f}</p><br>"
                     "<p style='color:BlueViolet'>TRAIN_acc:{:.4f}</p><br><p style='color:orange'>TEST_acc:{:.4f}</p><br>"
                     "<p style='color:green'>Time:{:.2f}</p>".format(epoch, sum_loss/sum_step, sum_acc/sum_step, acc,
                                                                       time.time()-start_time),
                     win=text)
            sum_loss, sum_acc, sum_step = 0., 0., 0.

以上就是pytorch教程網(wǎng)絡(luò)和損失函數(shù)的可視化代碼示例的詳細內(nèi)容,更多關(guān)于pytorch教程網(wǎng)絡(luò)和損失函數(shù)的可視化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于python使用OpenCV進行物體輪廓排序

    基于python使用OpenCV進行物體輪廓排序

    這篇文章主要介紹了基于python使用OpenCV進行物體輪廓排序,在進行圖像處理過程中,我們經(jīng)常會遇到一些和物體輪廓相關(guān)的操作,我們直接使用Opencv的findContours函數(shù)可以很容易的得到每個目標的輪廓,但是可視化后,?這個次序是無序的,更多相關(guān)資料請參考下面文章內(nèi)容
    2022-01-01
  • Python 列表反轉(zhuǎn)顯示的四種方法

    Python 列表反轉(zhuǎn)顯示的四種方法

    這篇文章主要介紹了Python 列表反轉(zhuǎn)顯示的四種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • ipad上運行python的方法步驟

    ipad上運行python的方法步驟

    在本篇文章里小編給大家分享的是關(guān)于ipad上運行python的方法步驟以及相關(guān)知識點,有需要的朋友們學習下。
    2019-10-10
  • Python制作一個隨機抽獎小工具的實現(xiàn)

    Python制作一個隨機抽獎小工具的實現(xiàn)

    最近在工作中面向社群玩家組織了一場活動,需要進行隨機抽獎,就做了一個簡單的隨機抽獎小工具。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • VS Code有哪些奇技淫巧(必知)

    VS Code有哪些奇技淫巧(必知)

    VS Code這幾年作為一款熱門的開發(fā)工具,逐漸受到更多開發(fā)者的歡迎,今天給大家分享VS Code有哪些奇技淫巧,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • 解決tensorflow1.x版本加載saver.restore目錄報錯的問題

    解決tensorflow1.x版本加載saver.restore目錄報錯的問題

    今天小編就為大家分享一篇解決tensorflow1.x版本加載saver.restore目錄報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Opencv中cv2.floodFill算法的使用

    Opencv中cv2.floodFill算法的使用

    本文結(jié)合實例,詳細的介紹了泛洪填充算法的具體使用,具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06
  • 不到40行代碼用Python實現(xiàn)一個簡單的推薦系統(tǒng)

    不到40行代碼用Python實現(xiàn)一個簡單的推薦系統(tǒng)

    這篇文章主要給大家介紹了如何利用不到40行python代碼實現(xiàn)一個簡單的推薦系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • PyTorch開源圖像分類工具箱MMClassification詳解

    PyTorch開源圖像分類工具箱MMClassification詳解

    MMClassification是一款基于PyTorch的開源圖像分類工具箱,集成了常用的圖像分類網(wǎng)絡(luò),將數(shù)據(jù)加載,模型骨架,訓(xùn)練調(diào)參,流程等封裝為模塊調(diào)用,便于在模型間進行轉(zhuǎn)換和比較,也高效簡潔的實現(xiàn)了參數(shù)調(diào)整
    2022-09-09
  • 使用Python實現(xiàn)屏幕截圖功能的詳細教程

    使用Python實現(xiàn)屏幕截圖功能的詳細教程

    Python使用ImageGrab截圖主要依賴于Pillow庫(PIL庫的一個分支),該庫提供了ImageGrab模塊來實現(xiàn)屏幕截圖功能,以下是一個詳細的截圖教程,需要的朋友可以參考下
    2025-01-01

最新評論

军事| 长沙县| 荣昌县| 石楼县| 成武县| 永德县| 师宗县| 四川省| 新兴县| 和政县| 丰原市| 志丹县| 保康县| 威远县| 闽清县| 手游| 呈贡县| 剑阁县| 郯城县| 新邵县| 阳城县| 双牌县| 深水埗区| 新蔡县| 洞头县| 琼结县| 辽中县| 封丘县| 南陵县| 贺州市| 平潭县| 伊宁县| 黎川县| 普安县| 阳城县| 大渡口区| 应城市| 小金县| 西畴县| 合作市| 延安市|