network.h

本文介绍了tiny-dnn库中两种模型类型:序列模型和计算图模型。这两种模型都使用相同的API,但结构不同。文章详细解释了network类的成员函数,包括训练、预测和模型管理等关键功能。

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.

两种网络被表示为networknetwork,他们有相同的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;
}

这块是对<< 操作符做的重载

总结

以上都是network.h 的一些主要函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值