深度学习中的动态Shape

一、概念

  • 静态Shape:指在网络执行阶段Tensor的shape没有发生变化;
  • 动态Shape:指在网络执行阶段Tensor的shape发生变化。

二、动态shape引起的原因

  1. 输入shape不固定;
  2. 网络执行过程中有引发shape变化的API;
  3. 控制流不同分支引入shape上的变化。

三、规避策略

  1. 可以在输入数据上加pad,pad到固定的shape。如deep_speechv2的数据处理 规定input_length的最大长度,短的补0,长的随机截断,但是注意这种方法可能会影响训练的精度,需要平衡训练精度和训练性能;
  2. 可以设置一组固定的输入shape,将输入分别处理成几个固定的尺度。如YOLOv3_darknet53的数据处理,在batch方法加处理函数multi_scale_trans,在其中MultiScaleTrans中随机选取一个shape进行处理;
  3. 构造mask来过滤掉无效的位置的值。

参考文章

posted @ 2024-05-07 19:14  珠峰上吹泡泡  阅读(50)  评论(0编辑  收藏  举报