cxxnet学习笔记4

来源:互联网 发布:定时器软件 编辑:程序博客网 时间:2024/06/03 18:06

cxxnet—nnet模块学习笔记

nnet模块抽象的表示了神经网络结构,它结合layer模块共同构筑了神经网络。

该模块包含的源码文件如下所示:


neural_net-inl.hpp

nnet.h

nnet_config.h

nnet_impl-inl.hpp

nnet_impl.cpp

nnet_impl.cu

nnet_ps_server.cpp


在nnet模块中,依赖关系如下所示:

CXXNetThreadTrainer->NeuralNetThread->NeuralNet


nnet.h是其接口,其他.hpp文件实现了其接口,.cpp文件使用了.hpp文件实现的接口。

在nnet.h中,定义了类INetTrainer,它是trainer网络的接口,还定义了一个带模版的创建函数,用来根据所选择设备,网络类型不同,创建所需trainer网络。


nnet_config.h实现网络结构配置功能,它定义了一个结构体NetConfig,它记录了神经网络的配置,用以存储网络结构,并可以读取该配置,它和每个层相关联。


nerual_net-inl.hpp单元实现了常用神经网络,它定义了一个带模版的结构体NerualNet,实现了抽象神经网络,它还定义了一个模版类NerualNetThread,表达了神经网络的独立线程结构。模版提供的类型有CPU和GPU可供选择。


nnet_impl-inl.hpp单元定义了一个类CXXNetThreadTrainer,它继承了INetTrainer,该类使用多线程实现了神经网络训练器,它同样包括一个模版,类型可选CPU或GPU。此外,它还定义了一个CXXNetThreadTrainer创建函数,可根据不同net_type和设备创建所需CXXNetThreadTrainer,nnet_impl.cpp文件唯一的函数Create也指向这里。


nnet_ps_sever.cpp单元涉及cxxnet和mshadow两个部分,其一是nnet下的CXXNetUpdater类实现,它继承于mshadow::ps::IModelUpdater<reanl_t>,还有一部分是mshadow下ps内 IModelUpdater<cxxnet::real_t>类型的CreateModelUpdater函数返回CXXNetUpdater类。

CXXNetUdater用于上传参数到参数服务器。


nnet_impl.cu是nnet_impl.cpp的GPU版本。


该模块主要用于构建神经网络,在下一步理解其内部逻辑关系以及网络构建流程才是关键。

0 0