pytorch使用tensorboardX進(jìn)行l(wèi)oss可視化實(shí)例
最近pytorch出了visdom,也沒有怎么去研究它,主要是覺得tensorboardX已經(jīng)夠用,而且用起來也十分的簡單
pip install tensorboardX
然后在代碼里導(dǎo)入
from tensorboardX import SummaryWriter
然后聲明一下自己將loss寫到哪個(gè)路徑下面
writer = SummaryWriter('./log')
然后就可以愉快的寫loss到你得這個(gè)writer了
niter = epoch * len(train_loader) + i
writer.add_scalars(args.result_path + 'Train_val_loss', {args.result_path+'train_loss': loss.data.item()}, niter)
其中,add_scalars是將不同得變量添加到同一個(gè)圖下,圖的名稱是add_scalars得第一個(gè)變量
然后為這個(gè)圖中不同得曲線添加不同得標(biāo)題,上面這一行代碼
writer.add_scalars(args.result_path + 'Train_val_loss', {args.result_path+'train_loss': loss.data.item()}, niter)
后面得dict中得key是曲線的名稱,后面的value是對應(yīng)得append的值,再后面得niter是x坐標(biāo),這句話得意思就相當(dāng)于,對于圖名稱為args.result_path + 'Train_val_loss'的圖,對曲線名稱為args.result_path+'train_loss'添加新的點(diǎn),這個(gè)點(diǎn)為(niter, loss.data.item())
同樣的,我可以畫出val的loss
niter = epoch * len(train_loader) + i
writer.add_scalars(args.result_path + 'Train_val_loss', {args.result_path+'val_loss': mean_loss}, niter)
writer保存到了我們剛剛聲明的路徑'./log‘下面,然后終端啟動tensorboard
tensorboard --logdir ./log --port 8890
不會用得進(jìn)行tensorboard --help即可
然后進(jìn)行端口映射就行了
實(shí)際上在使用的過程中,我發(fā)現(xiàn)了,如果你要保存的結(jié)果在各個(gè)子文件夾內(nèi),然后你在父文件夾運(yùn)行tensorboard,就可以在瀏覽器看到各種結(jié)果,而不必再進(jìn)行不同的端口映射
比如上面這個(gè),我的resnet文件夾下有不同的我writer寫入的文件,在父目錄下啟動tensorboard之后,
沒毛??!
補(bǔ)充拓展:pytorch產(chǎn)生loss的計(jì)算圖代碼
廢話不多說,直接上代碼
import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net,self).__init__() self.conv1=nn.Conv2d(1,6,5) self.conv2=nn.Conv2d(6,16,5) self.fc1=nn.Linear(16*5*5,120) self.fc2=nn.Linear(120,84) self.fc3=nn.Linear(84,10) def forward(self,x): x=F.max_pool2d(F.relu(self.conv1(x)),(2,2)) x=F.max_pool2d(F.relu(self.conv2(x)),2) x=x.view(x.size()[0],-1) print(x) x=F.relu(self.fc1(x)) x=F.relu(self.fc2(x)) x=self.fc3(x) return x net=Net() #params=list(net.parameters()) #for name,parameters in net.named_parameters(): # print(name,':',parameters.size()) #print(len(params)) #print(net) input=Variable(t.randn(1,1,32,32)) output=net(input) #out.size() target=Variable(t.arange(0,10)) criterion=nn.MSELoss() loss=criterion(output,target) loss.grad_fn
以上這篇pytorch使用tensorboardX進(jìn)行l(wèi)oss可視化實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python使用seaborn繪圖直方圖displot,密度圖,散點(diǎn)圖
這篇文章主要介紹了python使用seaborn繪圖直方圖displot,密度圖,散點(diǎn)圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07關(guān)于Django框架的關(guān)系模型序列化和一對多關(guān)系中的序列化解析
序列化的意思是把字典的形式轉(zhuǎn)化成Json格式。當(dāng)我們展示數(shù)據(jù)的時(shí)候需要使用,反序列化的話,就是Json轉(zhuǎn)成字典形式,存儲數(shù)據(jù)時(shí)候使用,需要的朋友可以參考下2023-05-05python和php學(xué)習(xí)哪個(gè)更有發(fā)展
在本篇內(nèi)容里小編給大家分析了關(guān)于python和php學(xué)習(xí)哪個(gè)更有發(fā)展相關(guān)論點(diǎn),有興趣的朋友們參考下。2020-06-06獲取python運(yùn)行輸出的數(shù)據(jù)并解析存為dataFrame實(shí)例
這篇文章主要介紹了獲取python運(yùn)行輸出的數(shù)據(jù)并解析存為dataFrame實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Pycharm使用Database?Navigator連接mysql數(shù)據(jù)庫全過程
這篇文章主要介紹了Pycharm使用Database?Navigator連接mysql數(shù)據(jù)庫全過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07python的staticmethod與classmethod實(shí)現(xiàn)實(shí)例代碼
這篇文章主要介紹了python的staticmethod與classmethod實(shí)現(xiàn)實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02Python 12306搶火車票腳本 Python京東搶手機(jī)腳本
這篇文章主要為大家詳細(xì)介紹了Python 12306搶火車票腳本和Python京東搶手機(jī)腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02