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));
}