caffe2: Ops, Helper Function 以及 brew 介绍。

OpsHelper Funtions 以及 Brewcaffe2中用来表示神经网络 layer的三个重要概念。下面我们对三者进行介绍。


1. Ops

Opsoperators的缩写,代表Op的集合。FC Op 是全连接层 (与上一层所有神经元链接,与下一层所有神经元链接)Op,可以通过下面的方式创建FC Op


model.net.FC([blob_in, weights, bias], blob_out)


或者使用下面的方式进行layer复制:


model.net.Copy(blob_in, blob_out)

2.Helper Function
使用Op来新建layer还是挺麻烦的,因为我们需要手动初始化此layerw以及b
model = model_helper.ModelHelper(name="train")
# initialize your weight
weight = model.param_init_net.XavierFill(
    [],
    blob_out + '_w',
    shape=[dim_out, dim_in],
    **kwargs, # maybe indicating weight should be on GPU here
)
# initialize your bias
bias = model.param_init_net.ConstantFill(
    [],
    blob_out + '_b',
    shape=[dim_out, ],
    **kwargs,
)
# finally building FC
model.net.FC([blob_in, weights, bias], blob_out, **kwargs)

 

Helper
Function可以帮助我们解决wb初始化,layer定义等问题,所以我们可以使用helper
function来创建layer
fcLayer = fc(model, blob_in, blob_out, **kwargs) 
 
 

3. brew

brewHelper Fucntion的集合,对于创建layer来说比Helper Function更简单。对于创建FC layer 来说我们可以通过一句brew命令:


brew.fc(model, blob_in, blob_out, ...)

 

看起来好像和Helper Function差不多,但是对于更加复杂的模型来说brew更加简单。


4. 自定义Helper Function

我们可以通过下面的方式自定义HF

 

def my_super_layer(model, blob_in, blob_out, **kwargs):
"""
   100x faster, awesome code that you'll share one day.
"""

brew.Register(my_super_layer)
brew.my_super_layer(model, blob_in, blob_out)

 

 

 

 

转载于:https://www.cnblogs.com/SongHaoran/p/7654828.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值