tiny-dnn 有两种类型的模型:
- sequential (序列)
Sequential representation describe network as linked list ,each layer has at most one predecessor and one successor layer
- graph(计算图)
A graph representation describe network as computational graph each node of graph is layer, and each directed edge holds tensor and its gradients.
两种网络被表示为network 和 network,他们有相同的api,但是有不同的结构。
network 类
成员函数:
- name() 网络名称
- init_weight() 显示的初始化所有层参数
- 几个个模板函数(目前看来是在做梯度下降的)
- bprop()
- fprop()
- update_weights() 参数更新
- predict() 前向传播返回结果
- predict_max_value() 前向传播返回最大值
train() 函数
对一个网络训练固定的epoch次数,train 函数和 fit 函数之间的区别在于怎样指定确认的输出。
这个函数有label_t 这个参数,并将这个参数转换成指定的类别向量。
为了保证训练的正确性,输出维度必须大于或者等于标签的数量。fit() 函数
训练网络指定的epoch 次数,每个minibatch 或者epoch 都有回调函数,网络训练的目的是为了最小化目标函数
输入和输出应该有相同的shape,如
std::vector< vec_t > data { { 1, 0 } , { 0 , 2 } };
std::vector< vec_t > out { { 2 } , { 1 } };set_netphase() set the netphase to train or test
- stop_ongoing_training()
- test()
- get_loss() 计算loss
- gradient_check() 梯度检查
- layer_size()
- depth()
- load() 加载模型
- save() 保存模型
- network &operator<<(network &n, Layer &&l) 重载 << 操作符
network<sequential> &operator<<(network<sequential> &n, Layer &&l) {
n.net_.add(std::forward<Layer>(l));
return n;
}
这块是对<< 操作符做的重载
std::forward 函数 —– 完美转发
construct_graph() 建图
总结
以上都是network.h 的一些主要函数。