diff --git a/src/engine.cpp b/src/engine.cpp index 3e4b839..c86eadd 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -224,15 +224,31 @@ rust::Vec Engine::infer(const rust::Vec &input) { input.size() / (dims.d[0] * dims.d[1] * dims.d[2] * mInputDataTypeSize); if (calculatedBatchSize < mMinBatchSize) { - throw std::runtime_error("Input is less the minimum batch size: " + - std::to_string(calculatedBatchSize) + " > " + - std::to_string(mMinBatchSize)); + throw std::runtime_error( + "Input batch size too small.\n" + "Calculation: input.size() = " + std::to_string(input.size()) + + ", dims = [" + std::to_string(dims.d[0]) + ", " + + std::to_string(dims.d[1]) + ", " + std::to_string(dims.d[2]) + "], " + + "mInputDataTypeSize = " + std::to_string(mInputDataTypeSize) + "\n" + + "Computed: " + std::to_string(input.size()) + " / (" + + std::to_string(dims.d[0]) + " * " + std::to_string(dims.d[1]) + " * " + + std::to_string(dims.d[2]) + " * " + std::to_string(mInputDataTypeSize) + + ") = " + std::to_string(calculatedBatchSize) + "\n" + + "Which is less than mMinBatchSize = " + std::to_string(mMinBatchSize)); } if (calculatedBatchSize > mMaxBatchSize) { - throw std::runtime_error("Input is greater than maximum batch size: " + - std::to_string(calculatedBatchSize) + " > " + - std::to_string(mMaxBatchSize)); + throw std::runtime_error( + "Input batch size too large.\n" + "Calculation: input.size() = " + std::to_string(input.size()) + + ", dims = [" + std::to_string(dims.d[0]) + ", " + + std::to_string(dims.d[1]) + ", " + std::to_string(dims.d[2]) + "], " + + "mInputDataTypeSize = " + std::to_string(mInputDataTypeSize) + "\n" + + "Computed: " + std::to_string(input.size()) + " / (" + + std::to_string(dims.d[0]) + " * " + std::to_string(dims.d[1]) + " * " + + std::to_string(dims.d[2]) + " * " + std::to_string(mInputDataTypeSize) + + ") = " + std::to_string(calculatedBatchSize) + "\n" + + "Which is greater than mMaxBatchSize = " + std::to_string(mMaxBatchSize)); } // Check that vector has enough elements for full input.