您好,登錄后才能下訂單哦!
本篇文章為大家展示了基于PyTorch的高級API封裝MagNet庫是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
MagNet,一個基于pytorch庫的高層API封裝庫,非常類似于Keras。寫過原生Tensorflow的童鞋肯定知道,那過程不好受,后來有了keras,tensorlayer等以后就方便多了。不同于Tensorflow,pytorch上手已經很容易了,但是有了MagNet,pytorch寫起來將更加簡潔。弄不好以后Keras+Tensorflow,MagNet+pytorch將作為入門深度學習的兩大選擇。目前該庫還在開發中,bug還不少,不過喜歡pytorch的童鞋不妨先試一下,及時跟進后續進展。
地址: https://github.com/MagNet-DL/magnet
0,安裝Anaconda (www.anaconda.com)
1,安裝magnet并創建conda環境
$git clone https://github.com/svaisakh/magnet.git
$cd magnet && conda env update
2,設置環境變量,編輯~/.bashrc
export PYTHONPATH=$PYTHONPATH:<magnet安裝路徑>
export MAGNET_DATAPATH="<數據集存放路徑>"
3,執行腳本使設置生效
$source ~/.bashrc
4,激活conda環境
$conda activate magnet
5,先測試上面的簡單網絡,流程掌握以后可以試一下復雜點的網絡。
class ResBlock(mn.Node): def __init__(self, c=None, p='same'): super().__init__(c) def build(self, x): # Tell the ResBlock how it should build itself c = self._args['c'] p = 'half' if c is None and self._args['p'] != 'same' else 'same'self.convs = nn.Sequential(mn.Conv(c, p=p), mn.Conv(c, p='same', act=None)) super().build(x) def forward(self, x): res = self.convs(x) # If downsampling, pad using zerosif x.shape[-1] != res.shape[-1]: x = F.avg_pool2d(x, 2, 2, x.shape[2] % 2) x = torch.cat([x, torch.zeros(x.shape[0], res.shape[1] - x.shape[1], x.shape[2], x.shape[3])], dim=1) return F.relu(res + x) res_layer = lambda n, c=None: nn.Sequential(ResBlock(c, p='half'),*[ResBlock(c) for _ in range(n - 1)]) resnet34 = nn.Sequential(mn.Conv(64, k=7), nn.MaxPool2d(3, 2, 1), res_layer(3, 64), res_layer(4), res_layer(6), res_layer(3), nn.AvgPool2d(7), mn.Linear(1000, act=None)).eval()
上述內容就是基于PyTorch的高級API封裝MagNet庫是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。