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

歡迎訪問 生活随笔!

生活随笔

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

pytorch

深度学习框架之个人见解

發布時間:2025/5/22 pytorch 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习框架之个人见解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目前本人使用過的深度學習框架有4個:按照使用先后順序:caffe,tensorflow,keras,pytorch。

從2個方面說一下體驗:

1)安裝體驗:

caffe: 安裝及其繁瑣,并且網上諸多教程都是瞎寫或者轉載,沒有實際安裝過。這里有一篇ubuntu14.04安裝caffe的比較好的教程:https://blog.csdn.net/leilei18a/article/details/79490081

tensorflow:安裝教程,較caffe來說簡單許多。附安裝教程:https://blog.csdn.net/leilei18a/article/details/79490175

keras:安裝教程,本人是在tf環境下安裝的,在安裝tensorflow之后,加一句pip install keras 即可

pytorch:安裝教程更簡單,與tensorflow基本一樣。若想在linux系統下安裝tensorflow,pytorch。那么需要創建2個環境即可。附:https://blog.csdn.net/leilei18a/article/details/79871423? 若在win下安裝cpu版本,下載tf與pytorch的whl文件,pip install 名字 即可。并且pytorch教程比tensorflow好許多,tensorflow太臃腫。pytorch官方教程鏈接:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html

2)使用體驗:

??? 1. 讀取數據:

caffe:一般是生成lmdb。??? 數據輸入格式:N*C*H*W

tensorflow:本人喜歡 feed 方式,至于tfrecords ,不是很喜歡,以及tensorflow的數據增強方式(替代為opencv-?? python);但是feed方式,建議將數據先生成HDF5文件,這樣讀取數據效率快較之讀取本地圖片。

?? 數據輸入格式:N*C*H*W或者N*H*W*C(默認,本人比較習慣了)

keras:與tensorflow基本一樣。

pytorch:對于公共小數據集,pytorch很多已經集成到torchvision模塊下。torchvision.datasets.下面

??? 數據輸入格式:N*C*H*W

??????????? 對于本地數據集,需要建立一個txt文件,然后建立 class 類:

def default_loader(path):
??? return Image.open(path).convert('RGB')

class MyDataset(Dataset):
??? def __init__(self, txt, transform=None, target_transform=None, loader=default_loader):
??????? fh = open(txt, 'r')
??????? imgs = []
??????? for line in fh:
??????????? line = line.strip('\n')
??????????? line = line.rstrip()
??????????? words = line.split()
??????????? imgs.append((words[0],int(words[1])))
??????? self.imgs = imgs
??????? self.transform = transform
??????? self.target_transform = target_transform
??????? self.loader = loader

??? def __getitem__(self, index):
??????? fn, label = self.imgs[index]
??????? img = self.loader(fn)
??????? if self.transform is not None:
??????????? img = self.transform(img)
??????? return img,label

??? def __len__(self):
??????? return len(self.imgs)

??? 2. 建立網絡:

caffe:可以使用腳本,不過費時費力。有python接口,利用python生成網絡,但是不能自動補全。

tensorflow:本人是圖像處理方向(LSTM接觸較少)。建議新手,先用tf.nn下面的基礎網絡函數建立網絡,熟練后,高級模塊有tf.layers,tf.contrib.layers,tf.contrib.slim(推薦使用slim模塊),而且slim模塊的fine-tune更加方便簡潔。

fine-tune模型鏈接:https://github.com/tensorflow/models/tree/master/research/slim

而且 slim模塊有已經寫好的網絡 可以直接調用(分類網絡)slim.nets. 各種網絡

keras:類似,預訓練模型鏈接:https://github.com/fchollet/deep-learning-models/releases

pytorch:與tensorflow slim fine-tune類似,pytorch也有寫好的網絡,可以直接調用。

??? torchvision.models.下面有各種網絡,模型可以通過函數自動下載:eg:torchvision.models.alexnet(pretrain=True)即可自動下載。也可以手動下載:https://github.com/aaron-xichen/pytorch-playground ; https://github.com/pytorch/vision/blob/master/torchvision/models/resnet.py (往上反一級即所有模型)


tensorflow與pytorch (vgg系列 或者殘差系列)實現HED或者U_Net,一般來說都是4個尺度變化,這是關鍵。

只需要記住 大部分是4個尺度變化或3 或5 個 ,那么無論多少個殘差單元或者多少個巻積層都沒有問題。只需要concat4次,上采樣4次。那么心里就不發怵了。pytorch實現HED鏈接:https://github.com/gengyanlei/Pytorch-HED

基于VGG系列:

tf:采用slim模塊以及outputs_collections,轉成dict,即可獲取在下采樣的每層的輸出(下采樣過程需要單獨構建一個函數,返回net,以及end_points每層的dict);那么在上采樣過程中,不管是HED或U_Net均可以調用他們,然后concat。

torch:采用fine-tune的網絡,model=torchvision.models.vgg11(pretrain=True)(既可以構建下采樣網絡,又可以獲取預訓練模型),而且pytorch將FC層與其他層單獨分開了,使得調用非FC層方便,直接model_n=model.features就是非FC層;那么再構建HED或者U_Net,只需要切片model_n即可。然后forward。

基于殘差系列:

tf:采用slim模塊以及outputs_collections,并且每個尺度下最后一層的net也會保存輸出成dict形式,很好調用。那么構建HED或者U_Net就是尺度構建問題了,但是仍然先需要構建下采樣過程函數,返回net,endpoints每個block的輸出。

pytorch:采用fine-tune的網絡,model=torchvision.models.vgg11(pretrain=True)(既可以構建下采樣網絡,又可以獲取預訓練模型),而且pytorch將FC層與其他層單獨分開了,使得調用非FC層方便,直接model_n=model.features就是非FC層;那么再構建HED或者U_Net,只需要切片model_n即可。然后forward。
---------------------
原文:https://blog.csdn.net/LEILEI18A/article/details/80255641

總結

以上是生活随笔為你收集整理的深度学习框架之个人见解的全部內容,希望文章能夠幫你解決所遇到的問題。

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