日韩性视频-久久久蜜桃-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影院 | 人人夜| 日韩精品观看 | 精品91自产拍在线观看二区 | 亚洲精品久久久久久久久 | 人物动物互动39集免费观看 | 性涩av | 亚洲 欧美 日韩 在线 | 国产精品视频网站 | 久久网一区二区 | 在线观看国产91 | 成人影视网址 | 成人久久精品人妻一区二区三区 | 超碰天堂 | 亚色成人 | 国产成人无码精品久久久电影 | 少妇三级全黄 | 九九99久久 | 东方影库av | 欧美日韩一区二区在线观看 | 色射综合| 啪啪小视频网站 | 日日夜夜综合网 | 97干在线| 97自拍视频 | 欧美亚洲综合视频 | 一区二区三区四区在线 | 中文字幕视频网 | 双性人hdsexvideos | cao久久| 外国黄色网址 | 哺乳援交吃奶在线播放 | 青青青手机视频 | 性欧美18一19内谢 | 成人动漫在线观看免费 | 激情综合网av| 午夜精品久久久久久久久久久久 | 亚洲三级视频在线观看 | 国产伦理自拍 | 操女网站| 国产农村妇女毛片精品 | 国产精伦| 午夜影院在线免费观看 | 国产乱人乱精一区二视频国产精品 | 丁香六月激情 | 一级片a级片 | 国产chinese中国hdxxxx | 一区二区三区中文字幕在线观看 | 日韩免费电影一区 | 国产热热 | 精品国产欧美 | 男人午夜剧场 | 亚洲熟妇无码爱v在线观看 九色福利 | 91理论片 | 黑人操亚洲人 | 国产美女免费看 | 欧美精品导航 | 成年人在线播放视频 | 邻居少妇张开双腿让我爽一夜 | 日韩性xxxx| 久久久777| 国产精品五区 | 熟妇人妻一区二区三区四区 | jizzz18| 一级一级黄色片 | r级无码视频在线观看 | 日本一二三区视频在线 | 99热这里只有精品3 成年人黄色网址 | 亚洲成年 | 亚洲视屏 | 欧美乱淫 | 国产一区视频免费观看 | 99热国| 森泽佳奈av| 韩国一区二区在线观看 | 爆操av | 四虎精品在线观看 | 手机在线一区二区三区 | 欧美一二三区在线观看 | 天堂av2020| 青春草久久 | 欧美精品一区二区蜜桃 | www超碰在线 | 毛片在哪里看 | 九九热精品在线 | 国产精品亚洲一区二区三区 | 欧美黑丝少妇 | 国产免费视频 | 中文字幕无码乱码人妻日韩精品 | 亚洲一区二区视频在线观看 | 制服丝袜在线看 | 在线观看免费视频黄 |