std::shared_ptr convertConv1d()

in recipes/streaming_convnets/tools/StreamingTDSModelConverter.cpp [56:89]


std::shared_ptr<streaming::Conv1d> convertConv1d(
    int cIn,
    int cOut,
    int kw,
    int dw,
    std::pair<int, int> padding,
    int groups,
    const fl::Variable& wt,
    const fl::Variable& bs) {
  if (wt.elements() != (cIn * cOut * kw) / (groups * groups) ||
      bs.elements() != cOut / groups) {
    LOG(INFO) << "Invalid params for conv1d. wt.elements():" << wt.elements()
              << " cIn:" << cIn << " cOut:" << cOut << " kw:" << kw
              << " groups:" << groups << "  bs.elements():" << bs.elements();
  }
  if (padding.first == -1 && padding.second == -1) {
    auto totalPad = kw - dw;
    padding.first = (totalPad + 1) / 2;
    padding.second = (totalPad + 1) / 2;
  } else if (padding.first == -1) {
    padding.first = kw - dw - padding.second;
  } else if (padding.second == -1) {
    padding.second = kw - dw - padding.first;
  }
  return streaming::createConv1d(
      cIn,
      cOut,
      kw,
      dw,
      padding,
      groups,
      variableToModuleParam(fl::reorder(wt, 2, 1, 0)),
      variableToModuleParam(bs));
}