基于PyTorch的高级API封装MagNet库是怎样的
本篇文章为大家展示了基于PyTorch的高级API封装MagNet库是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
十载的保靖网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整保靖建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“保靖网站设计”,“保靖网站推广”以来,每个客户项目都认真落实执行。
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:
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库是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
本文名称:基于PyTorch的高级API封装MagNet库是怎样的
分享链接:http://cdiso.cn/article/pcjdce.html