程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python的jupyterlab和Generator一點閒雜記錄:關於不能是用遠程imshow和torch

編輯:Python

文章目錄

        • 問題現象
        • 原因分析
    • 1、opencv的cv2.imshow在jupyter這樣的client/server環境下存在問題。 而matplotlib不存在這個問題。
        • 解決方法
    • 2、torch.Generator 隨機數生成器

問題現象

當在Notebook中使用opencv.imshow後,會造成Notebook崩潰。

原因分析

1、opencv的cv2.imshow在jupyter這樣的client/server環境下存在問題。 而matplotlib不存在這個問題。

解決方法

參考如下示例進行圖片顯示。注意opencv加載的是BGR格式, 而matplotlib顯示的是RGB格式。

Python語言:

from matplotlib import pyplot as plt
import cv2
img = cv2.imread('圖片路徑')
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('my picture')
plt.show()

2、torch.Generator 隨機數生成器

torch.Generator 隨機數生成器
PyTorch 通過 torch.Generator 類來操作隨機數

我們通常不會手動實例化 torch.Generator, 當需要隨機數時, PyTorch 會自動創建一個默認的 torch.Generator 實例

import torch
# 設置隨機數種子
torch.manual_seed(0)
# 查看隨機數種子 結果為 0
torch.initial_seed()
# 獲取默認的 Generator 實例
g_1 = torch.default_generator
# 通過實例調用 結果也為 0
g_1.initial_seed()

通過 torch.xxx 和 Generator 實例均可調用 manual_seed() 以及 initial_seed(), 前者相當於使用默認的 Generator 實例去調用相應方法

通常使用的函數 torch.manual_seed() 會作用到默認的 Generator 實例上

函數 torch.manual_seed() 會返回默認的 Generator 實例

g_2 = torch.manual_seed(0)
# 結果為 True
g_1 is g_2

在使用需要隨機數的函數時, 如果沒有指定 Generator 實例, 則會使用默認的 Generator 實例, 可以通過關鍵字參數 generator 指定隨機數生成器

# 使用默認的隨機數生成器
torch.manual_seed(1)
# 結果 tensor([0, 4, 2, 3, 1])
torch.randperm(5)
# 手動創建隨機數生成器
G = torch.Generator()
G.manual_seed(1)
# 結果也為 tensor([0, 4, 2, 3, 1])
torch.randperm(5, generator=G)

Generator 實例會區分 CPU 與 GPU 兩種設備, 默認為 CPU 類型

# 結果為 device(type='cpu')
G.device

mindspore中沒有提供此功能


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved