DeepNet的基本框架和训练机制

来源:互联网 发布:unity3d 麻将模型 编辑:程序博客网 时间:2024/05/23 02:05

DeepNet的基本框架包含三个部分,也就是它里头的三个文件夹:deepnet,cudamat和eigenmat。

其中deepnet中包括了DeepNet的接口函数,cudamat和eigenmat分别包含了DeepNet的库函数。


deepnet

deepnet文件夹中包含的是用Python实现的接口函数。主要有:

trainer.py:训练网络时使用的就是这个接口函数,训练的模型主要有四种:FEED_FORWARD_NET,DBM,DBN,SPARSE_CODER以及FAST_DROPOUT_NET,具体模型的类型在model.pbtxt中定义。使用方法:

python trainer.py model.pbtxt train.pbtxt eval.pbtxt 

其中train.pbtxt和eval.pbtxt在上一章中提到过,在此不再赘述。

上一章中我们还提到了model.pbtxt中除了模型类型(model_type)以外,还含有三个部分:hyperparams、layer和edge。

在这里分别对应了parameter.py,layer.py,edge.py三个接口函数。

neuralnet.py是另一个很重要的接口函数:它定义了NeuralNet,代表着最基本的网络模型:FEED_FORWARD_NET,也是其他几种网络模型的基础,包含了网络的前向传递、后向传递、更新layer和edge的参数、训练、验证、评估等所有的功能的接口。

dbm.py,sparse_coder.py,fastdropout.py,dbn.py分别代表了DBM,SparseCoder、FastDropoutNet以及DBN四种网络模型,其中DBM,SparseCoderFastDropoutNet均为NeuralNet的子类,DBN为DBM的子类。模型具体的含义和实现在这里不多介绍。

choose_matrix_library.py,顾名思义选择矩阵运算库,当使用GPU时,调用cudamat库,使用CPU时,调用eigenmat库。

除此之外,还有linear_layer.py,logistic_layer.py,relu_layer.py,sparse_code_layer.py,tanh_layer.py等各种激活层的接口函数,以及datahandler.py,extract_dbn_representation.py,mc_avg.py,make_plots.py,visualize.py等数据处理、提取特征、计算、画图、可视化等功能接口。


cudamat代表了使用GPU时,DeepNet运算所调用的库,而eigenmat则代表使用CPU时调用的库。

cudamat和eigenmat中分别包含了接口:cudamat.py和eigenmat.py。这两个接口函数分别定义了模型训练时所需要的各种矩阵计算、运算符以及各种操作等功能,这些功能的实现分别在cudamat_kernels.cu、eigenmat.cc中进行,分别是用CUDA语言和C语言实现。

cudamat还包含了接口:cudamat_conv.py,主要定义了卷积计算的相关操作,具体的实现在cudamat_conv.cu和cudamat_conv_kernels.cu中实现。


综上所述,DeepNet的训练机制就是利用deepnet中的接口函数读取所需模型的类型、各类参数并进行训练,训练所需的各种运算和操作就在所调用的cudamat或者eigenmat库中进行。


了解了DeepNet的基本框架和训练机制之后,我们就可以根据特定的需求来修改内部函数以实现我们所需要的功能。

2 0
原创粉丝点击