20 m_QuantizationInputs(),
21 m_CsvFilePath(csvFilePath)
28 const std::string& inputFilePath,
29 std::map<unsigned int, QuantizationInput>& passIdToQuantizationInput)
31 auto iterator = passIdToQuantizationInput.find(passId);
32 if (
iterator == passIdToQuantizationInput.end())
35 passIdToQuantizationInput.emplace(passId, input);
39 auto existingQuantizationInput =
iterator->second;
40 existingQuantizationInput.AddEntry(bindingId, inputFilePath);
58 auto iterator = m_TensorInfos.find(layerBindingId);
61 return m_TensorInfos.at(layerBindingId);
65 throw armnn::Exception(
"Could not retrieve tensor info for binding ID " + std::to_string(layerBindingId));
75 passId =
static_cast<unsigned int>(std::stoi(csvRows[rowIndex].values[0]));
77 catch (
const std::invalid_argument&)
80 " is not correct format on CSV row " + std::to_string(rowIndex));
90 bindingId = std::stoi(csvRows[rowIndex].values[1]);
92 catch (
const std::invalid_argument&)
95 " is not correct format on CSV row " + std::to_string(rowIndex));
102 std::string fileName = csvRows[rowIndex].values[2];
104 if (!fs::exists(fileName))
106 throw armnn::ParseException(
"File [ " + fileName +
"] provided on CSV row " + std::to_string(rowIndex) +
110 if (fileName.empty())
118 void QuantizationDataSet::ParseCsvFile()
120 std::map<unsigned int, QuantizationInput> passIdToQuantizationInput;
123 if (m_CsvFilePath ==
"")
129 std::vector<armnnUtils::CsvRow> csvRows = reader.
ParseFile(m_CsvFilePath);
135 for (
unsigned int i = 0; i < csvRows.size(); ++i)
137 if (csvRows[i].values.size() != 3)
139 throw armnn::Exception(
"CSV file [" + m_CsvFilePath +
"] does not have correct number of entries " +
140 "on line " + std::to_string(i) +
". Expected 3 entries " +
141 "but was " + std::to_string(csvRows[i].values.size()));
148 AddInputData(passId, bindingId, rawFileName, passIdToQuantizationInput);
151 if (passIdToQuantizationInput.empty())
158 for (
auto itr = passIdToQuantizationInput.begin(); itr != passIdToQuantizationInput.end(); ++itr)
160 m_QuantizationInputs.emplace_back(itr->second);
void AddInputData(unsigned int passId, armnn::LayerBindingId bindingId, const std::string &inputFilePath, std::map< unsigned int, QuantizationInput > &passIdToQuantizationInput)
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
armnn::LayerBindingId GetBindingIdFromCsvRow(std::vector< armnnUtils::CsvRow > csvRows, unsigned int rowIndex)
QuantizationInputs::iterator iterator
void IgnoreUnused(Ts &&...)
int LayerBindingId
Type of identifiers for bindable layers (inputs, outputs).
std::string GetFileNameFromCsvRow(std::vector< armnnUtils::CsvRow > csvRows, unsigned int rowIndex)
unsigned int GetPassIdFromCsvRow(std::vector< armnnUtils::CsvRow > csvRows, unsigned int rowIndex)
Base class for all ArmNN exceptions so that users can filter to just those.
virtual const TensorInfo & GetTensorInfo() const =0
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
static std::vector< CsvRow > ParseFile(const std::string &csvFile)