模型构建

我们通常将一个深度学习模型视为一个计算图,所以在Lumos中一个深度学习模型就是一个计算图,我们需要首先创建一个计算图类的实例

1Graph *g = create_graph()

在此之后您需要创建不同的计算层,并确定它们的链接方式

 1Layer *l1 = make_convolutional_layer(6, 5, 1, 0, 1, "relu");
 2Layer *l2 = make_avgpool_layer(2, 2, 0);
 3Layer *l3 = make_convolutional_layer(16, 5, 1, 0, 1, "relu");
 4Layer *l4 = make_avgpool_layer(2, 2, 0);
 5Layer *l5 = make_convolutional_layer(120, 5, 1, 0, 1, "relu");
 6Layer *l6 = make_im2col_layer();
 7Layer *l7 = make_connect_layer(84, 1, "relu");
 8Layer *l8 = make_connect_layer(10, 1, "relu");
 9Layer *l9 = make_softmax_layer(10);
10Layer *l10 = make_mse_layer(10);
 1append_layer2grpah(g, l1);
 2append_layer2grpah(g, l2);
 3append_layer2grpah(g, l3);
 4append_layer2grpah(g, l4);
 5append_layer2grpah(g, l5);
 6append_layer2grpah(g, l6);
 7append_layer2grpah(g, l7);
 8append_layer2grpah(g, l8);
 9append_layer2grpah(g, l9);
10append_layer2grpah(g, l10);

append_layer2grpah将您创建的计算层按顺序添加到计算图中,此时我们创建的计算图g,就是一个完整的静态深度学习模型

完成模型创建后,我们需要调度模型进行计算,Lumos提供Session会话类来完成全部的计算调度,首先我们需要实例化一个会话

1Session *sess = create_session(g, 32, 32, 1, 10, type, path);

并设置训练超参数

1set_train_params(sess, 15, 16, 16, 0.1);

在训练开始前,Lumos需要完成内存等训练环境初始化

1init_session(sess, "./data/mnist/train.txt", "./data/mnist/train_label.txt");

现在一切准备就绪,可以开始训练了

1train(sess);