CNTK从入门到深入研究(8) - CNTK工程结构(CNTK Core)

前言

CNTK对于使用者来说是用于神经网络的一套平台工具,但是对于程序员来说,更多的可拓展性以及定制性才能将CNTK使用在各种应用场合中。本文将针对CNTK的工程结构做一些研究,并根据官方给出的一些资料对其目前可以进行修改的地方进行初探。

工程

这里写图片描述

大家通过Visual Studio打开CNTK工程后,可发现解决方案视图中主要分为了几个部分,
1. CNTK Core
2. Extensibility
3. Reader Plugins
4. Documentation
5. Examples
6. Tests
7. Tools

通过名字已经知道每个部分的功能和存在的意义,本文只讲针对代码部分进行讲解,所以,只会针对前三部分进行简单的探究性说明。

CNTK Core

这里写图片描述

CNTK Core部分包含了8个项目,其中CNTK就是大家之前调用cntk.exe的入口工程。但是其本身为一个空的盒子(其实也实际包含了些内容)只是对其他项目的一个调用入口。下面将一一进行介绍。

CNTK

标题的名字看起来略微显得有点大,但是这部分只是cntk.exe部分,但是在这个子工程中,其的确扮演者很重要的角色(不仅仅是因为他是入口exe)。

这里写图片描述

通过工程文件可以看出,CNTK工程中,包含了3个主要的部分,
1. Common
2. Model Editing
3. BrainScript

Common

首先是Common这部分(笔者暂且将cntk.cpp也包括在内),首先第一部分是是包包括了配置文件的解析(Config.cpp)、DataReader、DataWriter等基础接口。

CNTK中基于数据块的配置文件就是有Config.cpp这部分进行解析的,当然,cntk.exe调用时传入的参数也由其一并处理。

DataReader和DataWritter这两部分主要是定义了CNTK中的Data Reader和Writer的接口,前面有提到过CNTK支持第三方通过插件的方式实现其自定义的Data Reader,这部分其实本质就是实现一个集成自IDataReader的类去实现这部分功能。

// Data Reader interface
// implemented by DataReader and underlying classes
class DATAREADER_API IDataReader

// Data Writer interface
// implemented by some DataWriters
class DATAWRITER_API IDataWriter

其他的在Common部分的文件包括File、fileutil、TimerUtility之类的这些的都是一些一些便捷工具相关的类,这里特别的推荐大家留意一下ExceptionWithCallStack有关异常处理的一个类,十分简单,但是也十分的实用,CNTK是MIT License的项目,所以日后在一些自己的工程中,完全可以借鉴其实现方法。


/// <summary>This function collects the stack tracke and writes it through the provided write function
/// <param name="write">Function for writing the text associated to a the callstack</param>
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值