本次考虑用CNTK实现一个最简单的前馈网络,所使用的数据集为OpenML上一个one_hundred_plants_shape,原数据集为arff格式,本人已转换为csv格式上传到了百度网盘中。数据集为1600*65,前64列为特征值,最后一列为分类号,从1至100,每一类16组数据。cntk版本为beta 5。主要用到的模块为cntk.learner、cntk.trainer、cntk.ops、cntk.utils。learner模块主要包含了一些随机优化算法如sgd()、momentum_sgd()等。trainer模块主要在训练模型时使用,常用的函数为train_minibatch()和test_minibatch()。ops模块中包含了各种运算函数,也有计算模型优度的函数cross_entropy_with_softmax()、classification_error()。
一般而言,训练神经网络需要以下几个步骤:
- 读取数据并对数据进行处理;
- 建立神经网络模型;
- 初始化学习器learner与训练器;
- 训练模型;
- 对模型进行测试。
读取数据并进行处理
在python中读取数据可以使用numpy的genfromtxt(),用delimiter设置分隔符。此外在CNTK中,目标向量需要转换为张量才能进行处理,因此需要预处理。假设目