概述
在设计深度神经网络的时候,往往需要迭代很多个结构相似、参数不同的模块,这时候如果把一个个的模块写出来当然可以,而且逻辑很清晰,但缺点是“工作量大”,形式上太笨。一种更为简洁的方法是类似定义函数或定义类一样把一个个模块给抽象出来,然后把模块在神经网络中参数化。
如下代码:
import torch.nn as nn
import torch
from torch import autograd
#这时候可以定义一个基本模块,该模块由“两层”卷积、BN和激活构成,以后使用的时候可以实例化该模块
class DoubleConv(nn.Module):
def __init__(self,in_ch,out_ch):
super(DoubleConv,self).__init__()
self.conv=nn.Sequential(
nn.Conv2d(in_ch,out_ch,3,padding=1),
nn.BatchNorm2d(out_ch),
nn.ReLU(inplace=True),
nn.Conv2d(out_ch,out_ch,3,padding=1),
nn.BatchNorm2d(out_ch),
nn.ReLU(inplace=True)
)
def forward(self,input):
return self.conv(input)
#在实现深度神经网络时候,就可以使用不同的参数实例化以上模块
class Unet(nn.Module):
def __init__(self,in_ch,out_ch):
super(Unet,self).__init__()
self.conv1=Double(in_ch,64)
...
最后
以上就是迅速盼望为你收集整理的深度学习网络模块化的全部内容,希望文章能够帮你解决深度学习网络模块化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复