我正在阅读这份文件tf.space_to_depth。在那里,它说明了该功能的使用:
此操作可用于调整卷积之间的激活大小(但保留所有数据),例如代替池化。它对于训练纯卷积模型也很有用。
但是,我仍然没有清楚地了解这一点。为什么有时需要调整模型中的激活大小?
在深度神经网络中,我们可以实现跳过连接来帮助:
解决消失梯度问题,训练更快
网络学习低级和高级功能的组合
在下采样期间恢复信息丢失,如最大池.
https://medium.com/@mikeliao/deep-layer-aggregation-combining-layers-in-nn-architectures-2744d29cab8
但是,我读了一些源代码,一些实现了跳过连接作为连接,一些作为求和.所以我的问题是每个实现的好处是什么?
对于像 yolo 或 R-CNN 这样的算法,他们使用锚框的概念来预测对象。https://pjreddie.com/darknet/yolo/
锚框是在特定数据集上训练的,COCO 数据集的一个是:
anchors = 0.57273, 0.677385, 1.87446, 2.06253, 3.33843, 5.47434, 7.88282, 3.52778, 9.77052, 9.16828
Run Code Online (Sandbox Code Playgroud)
但是,我不明白如何解释这些锚框?一对值 (0.57273, 0.677385) 是什么意思?
参考tensorflow mobilenetv1模型:https : //github.com/tensorflow/models/blob/9f7a5fa353df0ee2010f8e7a5494ca6b188af8bc/research/slim/nets/mobilenet_v1.py#L171
参数 depth_multiplier 记录为:
depth_multiplier:所有卷积操作的深度(通道数)的浮动乘数。该值必须大于零。典型的用法是将此值设置为 (0, 1) 以减少模型的参数数量或计算成本
但是在(论文)中,他们提到了两种类型的乘数:宽度乘数和分辨率乘数,那么哪一种对应深度乘数?
在Keras 上,他们说:
depth_multiplier:深度卷积的深度乘数(也称为分辨率乘数)
我很困惑!