日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

【深度学习】pytorch-tensorflow-anaconda笔记

發布時間:2025/3/21 pytorch 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【深度学习】pytorch-tensorflow-anaconda笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.安裝CornerNet、Anaconda和pytorch遇到的問題

2.安裝tensorflow-gpu版本

3.pytorch版本安裝

4.tensorflow和pytorch指定多GPU進行運算

5.pytorch和tensorflow中的tensor與numpy轉換

6.pytorch數據的并行計算(DataParallelism)

7.Pytorch查看可訓練參數

8.Pytorch凍結梯度,只訓練某幾層網絡權重

9.安裝anaconda后取消命令行前出現的base

1. 安裝CornerNet、Anaconda和pytorch遇到的問題

Anaconda在2019年5月已經禁止使用國內鏡像了,因此下面方法已經用不了了,權當做留念,以后只能使用官方提供的來安裝,速度慢點就慢點吧。

用conda安裝Pytorch過程中會連接失敗,這是因為Anaconda.org的服務器在國外。可以用清華TUNA鏡像源,包含Anaconda倉庫的鏡像,將其加入conda的配置,配置如下:

  • 添加清華鏡像
  • conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes
    切換回默認鏡像源,命令一行搞定:
    conda config --remove-key channels

    如果想單個刪除的話,刪除單個鏈接命令如下:

    conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  • 然后CornerNet官網會有如下一條命令來創建CornerNet_Lite環境并安裝conda_packagelist.txt文檔中的各種包:
  • conda create --name CornerNet_Lite --file conda_packagelist.txt --channel pytorch

    但是會出現中斷,提示安裝失敗,因此這里我們應該去掉后面指定channel路徑的–channel pytorch,即改為:

    conda create --name CornerNet_Lite --file conda_packagelist.txt

    3.對于安裝的pytorch版本問題,在conda_packagelist.txt需要把pytorch的版本以及cuda的版本根據電腦驅動版本來改過來。由于電腦cuda版本是9.0,而他的文件中卻是10.0,因此需要做出以下更改:
    (1) cuda100=1.0=0 改為 cuda90=1.0.0
    (2) pytorch=1.0.0=py3.7_cuda10.0.130_cudnn7.4.1_1 改為pytorch=1.0.0=py3.7_cuda9.0.176_cudnn7.4.1_1
    4. 如果怎么安裝都出錯,就卸載Anaconda后重新裝Anaconda,再試一遍,應該能解決問題。卸載Anaconda參考https://blog.csdn.net/yeler082/article/details/79116490

    5.遇到ValueError:numpy.ufunc size changed,may…的問題,解決方法是把numpy升級到1.16.1版本,pip install numpy==1.16.1。不過我上次遇到這種問題是由于沒裝好pytorch或者Anaconda。最后裝好了之后就不會出現這種情況。

    6.python圖像處理問題
    AttributeError: ‘NoneType’ object has no attribute ‘shape’
    原因:

    (1) 圖片不存在(路徑不存在, 路徑包含中文無法識別)
    (2) 讀取的圖片內容和默認讀取時參數匹配不匹配。(默認讀取的是3通道的彩色圖)例如讀取到的圖片是灰度圖,就會返回None。
    (3)路徑中有中文。

    7.命令
    (1) 安裝完anaconda后終端默認會出來一個(base),可使用conda deactivate命令去掉,不過有沒有不影響。
    (2) 創建zhz環境

    conda create --name zhz

    也可以使用例如

    conda create --name CornerNet_Lite --file conda_packagelist.txt --channel pytorch

    的命令通過pytorch官網安裝conda_packagelist.txt文件下的所有安裝包。conda_packagelist.txt由我們自己隨意決定想安裝哪些包,我們可以通過指定–chanel來從清華鏡像源安裝更快,參考5.1, 5.2。

    (3) 進入zhz環境

    source activate zhz

    (4) 退出zhz環境

    source activate

    2. 安裝tensorflow-gpu版本

    使用anaconda安裝tensorflow的環境:python3.5.6+tensorflow-gpu==1.12.0+cuda9.0.176+cudnn7.1.4安裝成功
    由于tensorflow目前不支持Python3.7,因此在系統中再安裝一個Python版本,以python3.5.6為例:
    1.安裝好Python3.5.6: 參考:https://www.cnblogs.com/ningvsban/p/4384995.html
    2.在anaconda下創建名為“tensorflow”并且Python環境為3.5版本的環境:

    conda create --name tensorflow python=3.5 #

    3.安裝tensorflow
    系統默認安裝tensorflow版本:

    pip install tensorflow-gpu

    安裝指定版本的tensorflow:

    pip install tensorflow-gpu==1.12.0

    如果你下載了某個版本的tensorflow-gpu到本地,可以這么安裝:

    pip install tensorflow_gpu-0.12.0-cp35-cp35m-manylinux1_x86_64.whl

    測試tensorflow是否安裝成功:
    進入Python

    import tensorflow as tf tf.__version__

    3.pytorch安裝

    建議0.4.0版本最合適,不要安裝最新版。
    我電腦和服務器版本都是cuda=9.0.176 + cudnn=7.1.4 + 1050Ti(我)+1080Ti(服務器)
    版本推薦:pytorch-0.4.0 + torchvision-0.1.8 + python=3.5.4
    在http://download.pytorch.org/whl/cu90/torch-0.4.0-cp35-cp35m-linux_x86_64.whl 可下載pytorch-0.4.0版本,python=3.5.4.

    如果想安裝別的版本,例如1.0.1版本,只需要把上面網址中的0.4.0改為1.0.1即可。
    還要安裝numpy之后才能import torch成功,否則只會安裝torch成功,導入會失敗

    也可在清華源鏡像中下載各pytorch安裝包,不過下載下來的是壓縮包(我還沒有查閱怎么使用這種安裝),不是whl格式的文件,: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/

    另 torchvision安裝0.1.8合適。因為更高的版本有些東西被棄用了,很多程序都運行不了,改起來很麻煩。
    安裝方法:下載pytorch-0.4.0版本的whl文件

    pip install torch-0.4.0-cp35-cp35m-linux_x86_64.whl pip install torchvision==0.1.8

    不能直接安裝pip install torchvision不指定版本,否則會自動安裝最高版本的torchvision,然后就自動把pytorch版本也升級了。

    4.tensorflow和pytorch指定多GPU進行運算

    tensorflow和pytorch指定多GPU的話,對應的語句首先改成:
    CUDA_VISIBLE_DEVICES=0,1 python my_script.py
    CUDA_VISIBLE_DEVICES=2,3 python my_script.py
    CUDA_VISIBLE_DEVICES=0,1,2,3 python my_script.py
    或者:
    os.environ[“CUDA_VISIBLE_DEVICES”] = “0,1,2,3” #一定要加引號
    在tensorflow中可以使用

    with tf.device('/gpu:0'):

    這樣的方式來指定GPU進行某部分運算。

    5.pytorch和tensorflow中的tensor與numpy轉換

    5.1 pytorch的tensor與numpy數組轉換

    pytorch的tensor對象與numpy數組是可以相互轉換的,且numpy數組的默認類型是double.

    (1)tensor轉numpy:
    # a是 <class ‘torch.Tensor’> # b和c是 <class ‘numpy.ndarray’> a = torch.ones(2,2) b = a.numpy() # 方法1 c=np.array(a) # 方法2,也可以轉numpy數組
    (2)numpy轉tensor:
    # a是 <class ‘numpy.ndarray’> # b和c是 <class ‘torch.Tensor’> a = np.ones(5) b = torch.from_numpy(a) # 方法1 c=torch.Tensor(a) # 方法2,也可以轉pytorch Tensor

    5.2 TensorFlow中 tensor與numpy數組轉換

    (1) ndarray 轉化為 tensor

    TensorFlow 通過 convert_to_tensor 這個函數進行轉換,代碼如下:

    # 創建ndarray array = np.array([1, 2, 3, 4], np.float32) # 將ndarray轉化為tensor t = tf.convert_to_tensor(array, tf.float32, name='t') print(t)Tensor("t:0", shape=(4,), dtype=float32)
    (2) tensor轉化為ndarray
    方法1:直接轉化
    # 創建張量 t = tf.constant([1, 2, 3, 4], tf.float32) session = tf.Session()array = session.run(t) # 張量轉化為ndarrayprint(type(array)) print(array)<class 'numpy.ndarray'> [ 1. 2. 3. 4.]
    方法2: 利用Tensor的成員函數eval
    t = tf.constant([1, 2, 3, 4], tf.float32) session = tf.Session()array = t.eval(session=session) # 張量轉化為ndarray print(type(array)) print(array)<class 'numpy.ndarray'> [ 1. 2. 3. 4.]
    上面這種方法也可以這么寫
    t = tf.constant([1, 2, 3, 4], tf.float32) # 張量轉化為ndarray with tf.Session() as session:array = t.eval()print(type(array))print(array)<class 'numpy.ndarray'> [ 1. 2. 3. 4.]

    6.pytorch數據的并行計算(DataParallelism)

    摘自:https://blog.csdn.net/Alawaka2018/article/details/80993197

    .to(device)

    \left( \frac{ \frac{x_b - x_a}{w_a} - \mu_x }{\sigma_x}, \frac{ \frac{y_b - y_a}{h_a} - \mu_y }{\sigma_y}, \frac{ \log \frac{w_b}{w_a} - \mu_w }{\sigma_w}, \frac{ \log \frac{h_b}{h_a} - \mu_h }{\sigma_h}\right)

    7.Pytorch查看可訓練參數,添加no bias decay實現

    參考:https://blog.csdn.net/jeryjeryjery/article/details/83057199
    遍歷named_parameters()中的所有的參數,只打印那些param.requires_grad=True的變量,就是模型中所有的可訓練參數列表
    model.parameters()只有數值,model.named_parameters()既有名稱,也有數值,model.parameters()就是從model.named_parameters()中提取的數值

    for name, param in model.named_parameters(): if param.requires_grad:print(name)

    下面是對params進行修改,只對權重進行衰減,不對偏置衰減:

    import torch.optim as optim### no bias decay ## 把model.named_parameters參數中的偏置和權重分別添加到各自的列表中。 ## 由于model.named_parameters()中只有(卷積層和BN層的)權重和偏置,所以optim.SGD()中的model.parameters()可以用weight_p, bias_p代替。 weight_p, bias_p = [],[] for name, p in model.named_parameters(): if 'bias' in name:bias_p += [p] else:weight_p += [p]for name, param in model.named_parameters(): if param.requires_grad:print(name) # Optimizer # optimizer = optim.SGD(model.parameters(), lr=hyp['lr0'], momentum=hyp['momentum'], weight_decay=hyp['weight_decay'], # nesterov=True) optimizer = optim.SGD([{'params': weight_p, 'weight_decay': hyp['weight_decay']},{'params': bias_p, 'weight_decay': 0}],lr=hyp['lr0'],momentum=hyp['momentum'], nesterov=True)

    可能在加入no bias decay的代碼后,會出現下面的錯誤,原因是因為你需要重頭開始訓練,而不能在某個epoch中斷訓練后修改代碼添加進no bias decay之后從檢查點恢復訓練,
    你都把可訓練參數修改進了weight_p, bias_p了,自然找不到之前訓練的參數了。

    Traceback (most recent call last):File "train.py", line 391, in <module>accumulate=opt.accumulate)File "train.py", line 153, in trainoptimizer.load_state_dict(chkpt['optimizer'])File "/usr/local/lib/python3.5/dist-packages/torch/optim/optimizer.py", line 110, in load_state_dictraise ValueError("loaded state dict has a different number of " ValueError: loaded state dict has a different number of parameter groups

    8.Pytorch凍結梯度,只訓練某幾層網絡權重

    具體實例及講解參考 https://blog.csdn.net/u012436149/article/details/66971822
    這里講一下requires_grad和volatile:
    (1)在訓練時如果想要固定網絡的底層,那么可以令這部分網絡對應子圖的參數requires_grad為False。這樣,在反向過程中就不會計算這些參數對應的梯度。
    (2)Variable的參數volatile=True和requires_grad=False的功能差不多,但是volatile的力量更大。當有一個輸入的volatile=True時,那么輸出的volatile=True。volatile=True推薦在模型的推理過程(測試)中使用,這時只需要令輸入的voliate=True,保證用最小的內存來執行推理,不會保存任何中間狀態。

    9.安裝anaconda后取消命令行前出現的base

    安裝conda后取消命令行前出現的base,取消每次啟動自動激活conda的基礎環境

    參考: https://blog.csdn.net/u014734886/article/details/90718719

    方法一:

    每次在命令行通過conda deactivate退出base環境回到系統自動的環境

    方法二

    1,通過將auto_activate_base參數設置為false實現:

    conda config --set auto_activate_base false

    2,那要進入的話通過conda activate base

    3,如果反悔了還是希望base一直留著的話通過conda config --set auto_activate_base true來恢復

    總結

    以上是生活随笔為你收集整理的【深度学习】pytorch-tensorflow-anaconda笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 成人黄色一级视频 | 日韩精品视频在线观看网站 | 北条麻妃av在线播放 | 国产女人高潮视频 | 国产av一区二区不卡 | 97色在线观看 | 免费欧美一级视频 | 日韩在线视频二区 | 国产成人网 | 91精选视频 | 黑人干亚洲女 | www.毛片 | 向日葵视频在线 | 一级二级三级视频 | 国产高清精品在线 | 精品国产www| 男人操女人免费视频 | 成人av无码一区二区三区 | 国产毛毛片 | 久久久久亚洲精品系列色欲 | 日韩欧美一区二区三区四区五区 | 中文乱码人妻一区二区三区视频 | 天天艹天天爽 | 日韩美女视频在线观看 | 亚洲性综合 | 一本亚洲| 久草综合在线视频 | 欧美一区二区大片 | 五月天黄色小说 | 黑人欧美一区二区三区 | 午夜精品欧美 | 少妇久久久久久被弄高潮 | 久色资源 | 加勒比久久综合 | 天天色天天干天天 | 国产午夜麻豆影院在线观看 | 亚洲婷婷av | 91天堂网| 嫩草影院永久入口 | 91中文字幕视频 | 每日更新av | 偷偷操99 | 日韩人妻精品在线 | a级欧美| 欧美国产日韩精品 | 国产你懂得| 亚洲最大的黄色网 | 日本中文字幕成人 | 欧美久久久久久久久久久久 | 草比视频在线观看 | 神马午夜激情 | 人妻精品久久久久中文 | 男男gay同性三级 | 精品一二三四区 | 国产成人精品一区二区三区视频 | 久热中文字幕在线 | 亚洲精品aaa | 白白色在线播放 | 国产女人18毛片水真多 | 亚洲免费一区视频 | 欧美成人性生活 | 中文字幕亚洲精品在线观看 | 污片在线免费看 | 亚洲中文字幕第一区 | 小泽玛利亚在线 | 欧美脚交视频 | 韩国三级视频在线观看 | 双性娇喘浑圆奶水h男男漫画 | 久久精品视频99 | 青娱乐在线免费视频 | 婷婷四月 | 性感美女在线观看 | 伊人久久香 | 久久久欧美精品 | 538国产精品一区二区免费视频 | 99热这里只 | 男生坤坤放进女生坤坤里 | 极品国产一区 | 色婷婷av一区二区三区软件 | 一级性生活毛片 | 美女三级黄色 | 性xxx18 | 韩国av中文字幕 | 日韩欧美一区二区三区免费观看 | 九九热视频在线免费观看 | 精品裸体舞一区二区三区 | 一本高清视频 | 国产无遮挡一区二区三区毛片日本 | 99在线小视频 | 第五色婷婷| 伊人精品| 久久全国免费视频 | 国产女人爽到高潮a毛片 | 毛片大全免费看 | av免费网站观看 | 日韩污视频在线观看 | 精品人妻一区二区三区视频 | 亚洲综合图色 | 18av视频 |