bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

Pytorch的使用技巧有哪些

本篇內(nèi)容主要講解“Pytorch的使用技巧有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Pytorch的使用技巧有哪些”吧!

創(chuàng)新互聯(lián)專注于洮北網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供洮北營(yíng)銷型網(wǎng)站建設(shè),洮北網(wǎng)站制作、洮北網(wǎng)頁(yè)設(shè)計(jì)、洮北網(wǎng)站官網(wǎng)定制、微信平臺(tái)小程序開發(fā)服務(wù),打造洮北網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供洮北網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

一、初級(jí)“法寶”,sys.stdout

訓(xùn)練模型,最常看的指標(biāo)就是 Loss。我們可以根據(jù) Loss 的收斂情況,初步判斷模型訓(xùn)練的好壞。

如果,Loss 值突然上升了,那說(shuō)明訓(xùn)練有問題,需要檢查數(shù)據(jù)和代碼。

如果,Loss 值趨于穩(wěn)定,那說(shuō)明訓(xùn)練完畢了。

觀察 Loss 情況,最直觀的方法,就是繪制 Loss 曲線圖。

Pytorch的使用技巧有哪些

通過繪圖,我們可以很清晰的看到,左圖還有收斂空間,而右圖已經(jīng)完全收斂。

通過 Loss 曲線,我們可以分析模型訓(xùn)練的好壞,模型是否訓(xùn)練完成,起到一個(gè)很好的“監(jiān)控”作用。

繪制 Loss 曲線圖,第一步就是需要保存訓(xùn)練過程中的 Loss 值。

一個(gè)最簡(jiǎn)單的方法是使用,sys.stdout 標(biāo)準(zhǔn)輸出重定向,簡(jiǎn)單好用,實(shí)乃“煉丹”必備“良寶”。

import os
import sys
class Logger():
    def __init__(self, filename="log.txt"):
        self.terminal = sys.stdout
        self.log = open(filename, "w")
 
    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)
 
    def flush(self):
        pass
 
sys.stdout = Logger()
 
print("Jack Cui")
print("https://cuijiahua.com")
print("https://mp.weixin.qq.com/s/OCWwRVDFNslIuKyiCVUoTA")

代碼很簡(jiǎn)單,創(chuàng)建一個(gè) log.py 文件,自己寫一個(gè) Logger 類,并采用 sys.stdout 重定向輸出。

在 Terminal 中,不僅可以使用 print 打印結(jié)果,同時(shí)也會(huì)將結(jié)果保存到 log.txt 文件中。

Pytorch的使用技巧有哪些

運(yùn)行 log.py,打印 print 內(nèi)容的同時(shí),也將內(nèi)容寫入了 log.txt 文件中。

使用這個(gè)代碼,就可以在打印 Loss 的同時(shí),將結(jié)果保存到指定的 txt 中,比如保存上篇文章訓(xùn)練 UNet 的 Loss。

Pytorch的使用技巧有哪些

二、中級(jí)“法寶”,matplotlib

Matplotlib 是一個(gè) Python 的繪圖庫(kù),簡(jiǎn)單好用。

簡(jiǎn)單幾行命令,就可以繪制曲線圖、散點(diǎn)圖、條形圖、直方圖、餅圖等等。

在深度學(xué)習(xí)中,一般就是繪制曲線圖,比如 Loss 曲線、Acc 曲線。

舉一個(gè),簡(jiǎn)單的例子。

使用 sys.stdout 保存的 train_loss.txt,繪制 Loss 曲線。

Pytorch的使用技巧有哪些

train_loss.txt 下載地址:點(diǎn)擊查看

思路非常簡(jiǎn)單,讀取 txt 內(nèi)容,解析 txt 內(nèi)容,使用 Matplotlib 繪制曲線。

import matplotlib.pyplot as plt
# Jupyter notebook 中開啟
# %matplotlib inline
with open('train_loss.txt', 'r') as f:
    train_loss = f.readlines()
    train_loss = list(map(lambda x:float(x.strip()), train_loss))
x = range(len(train_loss))
y = train_loss
plt.plot(x, y, label='train loss', linewidth=2, color='r', marker='o', markerfacecolor='r', markersize=5)
plt.xlabel('Epoch')
plt.ylabel('Loss Value')
plt.legend()
plt.show()

指定 x 和 y 對(duì)應(yīng)的值,就可以繪制。

Pytorch的使用技巧有哪些

是不是很簡(jiǎn)單?

三、中級(jí)“法寶”,Logging

說(shuō)到保存日志,那不得不提 Python 的內(nèi)置標(biāo)準(zhǔn)模塊 Logging,它主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級(jí)、日志保存路徑、日志文件回滾等,同時(shí),我們也可以設(shè)置日志的輸出格式。

import logging

def get_logger(LEVEL, log_file = None):
    head = '[%(asctime)-15s] [%(levelname)s] %(message)s'
    if LEVEL == 'info':
        logging.basicConfig(level=logging.INFO, format=head)
    elif LEVEL == 'debug':
        logging.basicConfig(level=logging.DEBUG, format=head)
    logger = logging.getLogger()
    if log_file != None:
        fh = logging.FileHandler(log_file)
        logger.addHandler(fh)
    return logger

logger = get_logger('info')

logger.info('Jack Cui')
logger.info('https://cuijiahua.com')
logger.info('https://mp.weixin.qq.com/s/OCWwRVDFNslIuKyiCVUoTA')

只需要幾行代碼,進(jìn)行一個(gè)簡(jiǎn)單的封裝使用。使用函數(shù) get_logger 創(chuàng)建一個(gè)級(jí)別為 info 的 logger,如果指定 log_file,則會(huì)對(duì)日志進(jìn)行保存。

Pytorch的使用技巧有哪些

logging 默認(rèn)支持的日志一共有 5 個(gè)等級(jí):

Pytorch的使用技巧有哪些

日志級(jí)別等級(jí) CRITICAL > ERROR > WARNING > INFO > DEBUG。

默認(rèn)的日志級(jí)別設(shè)置為 WARNING,也就是說(shuō)如果不指定日志級(jí)別,只會(huì)顯示大于等于 WARNING 級(jí)別的日志。

例如:

import logging
logging.debug("debug_msg")
logging.info("info_msg")
logging.warning("warning_msg")
logging.error("error_msg")
logging.critical("critical_msg")

運(yùn)行結(jié)果:

WARNING:root:warning_msg
ERROR:root:error_msg
CRITICAL:root:critical_msg

可以看到 info 和 debug 級(jí)別的日志不會(huì)輸出,默認(rèn)的日志格式也比較簡(jiǎn)單。

默認(rèn)的日志格式為日志級(jí)別:Logger名稱:用戶輸出消息

當(dāng)然,我們可以通過,logging.basicConfig 的 format 參數(shù),設(shè)置日志格式。

Pytorch的使用技巧有哪些

字段有很多,可謂應(yīng)有盡有,足以滿足我們定制化的需求。

四、高級(jí)“法寶”,TensorboardX

上文介紹的“法寶”,并非針對(duì)深度學(xué)習(xí)“煉丹”使用的工具。

而 TensorboardX 則不同,它是專門用于深度學(xué)習(xí)“煉丹”的高級(jí)“法寶”。

早些時(shí)候,很多人更喜歡用 Tensorflow 的原因之一,就是 Tensorflow 框架有個(gè)一個(gè)很好的可視化工具 Tensorboard。

Pytorch 要想使用 Tensorboard 配置起來(lái)費(fèi)勁兒不說(shuō),還有很多 Bug。

Pytorch 1.1.0 版本發(fā)布后,打破了這個(gè)局面,TensorBoard 成為了 Pytorch 的正式可用組件。

在 Pytorch 中,這個(gè)可視化工具叫做 TensorBoardX,其實(shí)就是針對(duì) Tensorboard 的一個(gè)封裝,使得 PyTorch 用戶也能夠調(diào)用 Tensorboard。

TensorboardX 安裝也非常簡(jiǎn)單,使用 pip 即可安裝。

pip install tensorboardX

tensorboardX 使用也很簡(jiǎn)單,編寫如下代碼。

from tensorboardX import SummaryWriter

# 創(chuàng)建 writer1 對(duì)象
# log 會(huì)保存到 runs/exp 文件夾中
writer1 = SummaryWriter('runs/exp')

# 使用默認(rèn)參數(shù)創(chuàng)建 writer2 對(duì)象
# log 會(huì)保存到 runs/日期_用戶名 格式的文件夾中
writer2 = SummaryWriter()

# 使用 commet 參數(shù),創(chuàng)建 writer3 對(duì)象
# log 會(huì)保存到 runs/日期_用戶名_resnet 格式的文件中
writer3 = SummaryWriter(comment='_resnet')

使用的時(shí)候,創(chuàng)建一個(gè) SummaryWriter 對(duì)象即可,以上展示了三種初始化 SummaryWriter 的方法:

  • 提供一個(gè)路徑,將使用該路徑來(lái)保存日志

  • 無(wú)參數(shù),默認(rèn)將使用 runs/日期_用戶名 路徑來(lái)保存日志

  • 提供一個(gè) comment 參數(shù),將使用 runs/日期_用戶名+comment 路徑來(lái)保存日志

運(yùn)行結(jié)果:

Pytorch的使用技巧有哪些

有了 writer 我們就可以往日志里寫入數(shù)字、圖片、甚至聲音等數(shù)據(jù)。

數(shù)字 (scalar)

這個(gè)是最簡(jiǎn)單的,使用 add_scalar 方法來(lái)記錄數(shù)字常量。

add_scalar(tag, scalar_value, global_step=None, walltime=None)

總共 4 個(gè)參數(shù)。

  • tag (string): 數(shù)據(jù)名稱,不同名稱的數(shù)據(jù)使用不同曲線展示

  • scalar_value (float): 數(shù)字常量值

  • global_step (int, optional): 訓(xùn)練的 step

  • walltime (float, optional): 記錄發(fā)生的時(shí)間,默認(rèn)為 time.time()

需要注意,這里的 scalar_value 一定是 float 類型,如果是 PyTorch scalar tensor,則需要調(diào)用 .item() 方法獲取其數(shù)值。我們一般會(huì)使用 add_scalar 方法來(lái)記錄訓(xùn)練過程的 loss、accuracy、learning rate 等數(shù)值的變化,直觀地監(jiān)控訓(xùn)練過程。

運(yùn)行如下代碼:

from tensorboardX import SummaryWriter    
writer = SummaryWriter('runs/scalar_example')
for i in range(10):
    writer.add_scalar('quadratic', i**2, global_step=i)
    writer.add_scalar('exponential', 2**i, global_step=i)
writer.close()

通過 add_scalar 往日志里寫入數(shù)字,日志保存到 runs/scalar_example中,writer 用完要記得 close,否則無(wú)法保存數(shù)據(jù)。

在 cmd 中使用如下命令:

tensorboard --logdir=runs/scalar_example --port=8088

指定日志地址,使用端口號(hào),在瀏覽器中,就可以使用如下地址,打開 Tensorboad。

http://localhost:8088/

省去了我們自己寫代碼可視化的麻煩。

Pytorch的使用技巧有哪些

圖片 (image)

使用 add_image 方法來(lái)記錄單個(gè)圖像數(shù)據(jù)。注意,該方法需要 pillow 庫(kù)的支持

add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')

參數(shù):

  • tag (string):數(shù)據(jù)名稱

  • img_tensor (torch.Tensor / numpy.array):圖像數(shù)據(jù)

  • global_step (int, optional):訓(xùn)練的 step

  • walltime (float, optional):記錄發(fā)生的時(shí)間,默認(rèn)為 time.time()

  • dataformats (string, optional):圖像數(shù)據(jù)的格式,默認(rèn)為 'CHW',即 Channel x Height x Width,還可以是 'CHW'、'HWC' 或 'HW' 等

我們一般會(huì)使用 add_image 來(lái)實(shí)時(shí)觀察生成式模型的生成效果,或者可視化分割、目標(biāo)檢測(cè)的結(jié)果,幫助調(diào)試模型。

from tensorboardX import SummaryWriter
from urllib.request import urlretrieve
import cv2

urlretrieve(url = 'https://raw.githubusercontent.com/Jack-Cherish/Deep-Learning/master/Pytorch-Seg/lesson-2/data/train/label/0.png',filename = '1.jpg')
urlretrieve(url = 'https://raw.githubusercontent.com/Jack-Cherish/Deep-Learning/master/Pytorch-Seg/lesson-2/data/train/label/1.png',filename = '2.jpg')
urlretrieve(url = 'https://raw.githubusercontent.com/Jack-Cherish/Deep-Learning/master/Pytorch-Seg/lesson-2/data/train/label/2.png',filename = '3.jpg')

writer = SummaryWriter('runs/image_example')
for i in range(1, 4):
    writer.add_image('UNet_Seg',
                     cv2.cvtColor(cv2.imread('{}.jpg'.format(i)), cv2.COLOR_BGR2RGB),
                     global_step=i,
                     dataformats='HWC')
writer.close()

代碼就是下載上篇文章數(shù)據(jù)集里的三張圖片,然后使用 Tensorboard 可視化處理來(lái),使用 8088 端口開打 Tensorboard:

tensorboard --logdir=runs/image_example --port=8088

運(yùn)行結(jié)果:

Pytorch的使用技巧有哪些

試想一下,一邊訓(xùn)練,一邊輸出圖片結(jié)果,是不是很酸爽呢?

Tensorboard 中常用的 Scalar 和 Image,直方圖、運(yùn)行圖、嵌入向量等,可以查看官方手冊(cè)進(jìn)行學(xué)習(xí),方法都是類似的,簡(jiǎn)單好用。

到此,相信大家對(duì)“Pytorch的使用技巧有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享標(biāo)題:Pytorch的使用技巧有哪些
標(biāo)題URL:http://vcdvsql.cn/article14/gjjcde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷響應(yīng)式網(wǎng)站移動(dòng)網(wǎng)站建設(shè)網(wǎng)站建設(shè)靜態(tài)網(wǎng)站App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)