pytorch plt.savefig()的用法及保存路徑
圖像有時候比數據更能滿足人們的視覺需求
Pytorch中保存圖片的方式
pytorch下保存圖像有很多種方法,但是這些基本上都是基於圖像處理的,將圖像的像素指定一定的維度 ,方法如下:
1、tensor直接保存
#!/usr/bin/env python # _*_ coding:utf-8 _*_ import torch from torchvision import utils as vutils def save_image_tensor(input_tensor: torch.Tensor, filename): """ 將tensor保存為圖片 :param input_tensor: 要保存的tensor :param filename: 保存的文件名 """ assert (len(input_tensor.shape) == 4 and input_tensor.shape[0] == 1) # 復制一份 input_tensor = input_tensor.clone().detach() # 到cpu input_tensor = input_tensor.to(torch.device('cpu')) # 反歸一化 # input_tensor = unnormalize(input_tensor) vutils.save_image(input_tensor, filename)
2、tensor轉cv2保存
#!/usr/bin/env python # _*_ coding:utf-8 _*_ import torch import cv2 def save_image_tensor2cv2(input_tensor: torch.Tensor, filename): """ 將tensor保存為cv2格式 :param input_tensor: 要保存的tensor :param filename: 保存的文件名 """ assert (len(input_tensor.shape) == 4 and input_tensor.shape[0] == 1) # 復制一份 input_tensor = input_tensor.clone().detach() # 到cpu input_tensor = input_tensor.to(torch.device('cpu')) # 反歸一化 # input_tensor = unnormalize(input_tensor) # 去掉批次維度 input_tensor = input_tensor.squeeze() # 從[0,1]轉化為[0,255],再從CHW轉為HWC,最後轉為cv2 input_tensor = input_tensor.mul_(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).type(torch.uint8).numpy() # RGB轉BRG input_tensor = cv2.cvtColor(input_tensor, cv2.COLOR_RGB2BGR) cv2.imwrite(filename, input_tensor)
3、tensor轉pillow保存
def save_image_tensor2pillow(input_tensor: torch.Tensor, filename): """ 將tensor保存為pillow :param input_tensor: 要保存的tensor :param filename: 保存的文件名 """ assert (len(input_tensor.shape) == 4 and input_tensor.shape[0] == 1) # 復制一份 input_tensor = input_tensor.clone().detach() # 到cpu input_tensor = input_tensor.to(torch.device('cpu')) # 反歸一化 # input_tensor = unnormalize(input_tensor) # 去掉批次維度 input_tensor = input_tensor.squeeze() # 從[0,1]轉化為[0,255],再從CHW轉為HWC,最後轉為numpy input_tensor = input_tensor.mul_(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).type(torch.uint8).numpy() # 轉成pillow im = Image.fromarray(input_tensor) im.save(filename)
主要是寫一些函數來保存圖片;
另外,pytorch中有很多可以直接保存圖片的語句
如
save_image(fake_images, './img/fake_images-{}.png'.format(epoch + 1))
此語句同樣需要轉化像素。
那麼如果
我隻需要打開一個視窗,觀察訓練過程中圖像的變化,我對圖像像素保存沒有什麼需求,隻是保存一個視窗,那麼我需要的保存圖像的函數僅僅是一個
plt.savefig
plt.savefig的用法以及保存的路徑,及訓練過程中不會被覆蓋掉,可以上代碼供大傢參考
if epoch % 10== 0: plt.title('ber:{:.3f},a: {:.3f},b:{:.3f},snr: {:.3f}'.format( error_rate, a, b,M )) plt.plot(r3) # 繪制波形 # save_image(r3, './img/fake_images-{}.png'.format(epoch + 1)) # print(type(r3)) # plt.draw() plt.draw() plt.savefig('./img/pic-{}.png'.format(epoch + 1)) plt.pause(1) plt.close(fig1)
大功告成,可以看看保存後的圖片
已經都整整齊齊的在我的保存路徑下瞭。
總結
到此這篇關於pytorch plt.savefig()用法及保存路徑的文章就介紹到這瞭,更多相關plt.savefig()用法及路徑內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 淺談tensorflow與pytorch的相互轉換
- pytorch tensor計算三通道均值方式
- PyTorch中的CUDA的操作方法
- pytorch教程之Tensor的值及操作使用學習
- PyTorch中Tensor和tensor的區別及說明