IVGCVSW-3005 Correct the order of inputs and outputs of deepspeech v1
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>
Fri, 26 Apr 2019 12:48:57 +0000 (13:48 +0100)
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>
Fri, 26 Apr 2019 12:49:17 +0000 (13:49 +0100)
Change-Id: I36b3467e74508ad4e8f3140285f965bc63433d1d
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
tests/DeepSpeechV1Database.hpp
tests/DeepSpeechV1InferenceTest.hpp
tests/LstmCommon.hpp

index 274bf6e..037c810 100644 (file)
@@ -115,30 +115,30 @@ struct DeepSpeechV1TestCaseData
 class DeepSpeechV1Database
 {
 public:
-    explicit DeepSpeechV1Database(const std::string& inputSeqDir, const std::string& prevStateCDir,
-                                  const std::string& prevStateHDir, const std::string& logitsDir,
-                                  const std::string& newStateCDir, const std::string& newStateHDir);
+    explicit DeepSpeechV1Database(const std::string& inputSeqDir, const std::string& prevStateHDir,
+                                  const std::string& prevStateCDir, const std::string& logitsDir,
+                                  const std::string& newStateHDir, const std::string& newStateCDir);
 
     std::unique_ptr<DeepSpeechV1TestCaseData> GetTestCaseData(unsigned int testCaseId);
 
 private:
     std::string m_InputSeqDir;
-    std::string m_PrevStateCDir;
     std::string m_PrevStateHDir;
+    std::string m_PrevStateCDir;
     std::string m_LogitsDir;
-    std::string m_NewStateCDir;
     std::string m_NewStateHDir;
+    std::string m_NewStateCDir;
 };
 
-DeepSpeechV1Database::DeepSpeechV1Database(const std::string& inputSeqDir, const std::string& prevStateCDir,
-                                           const std::string& prevStateHDir, const std::string& logitsDir,
-                                           const std::string& newStateCDir, const std::string& newStateHDir)
+DeepSpeechV1Database::DeepSpeechV1Database(const std::string& inputSeqDir, const std::string& prevStateHDir,
+                                           const std::string& prevStateCDir, const std::string& logitsDir,
+                                           const std::string& newStateHDir, const std::string& newStateCDir)
     : m_InputSeqDir(inputSeqDir)
-    , m_PrevStateCDir(prevStateCDir)
     , m_PrevStateHDir(prevStateHDir)
+    , m_PrevStateCDir(prevStateCDir)
     , m_LogitsDir(logitsDir)
-    , m_NewStateCDir(newStateCDir)
     , m_NewStateHDir(newStateHDir)
+    , m_NewStateCDir(newStateCDir)
 {}
 
 std::unique_ptr<DeepSpeechV1TestCaseData> DeepSpeechV1Database::GetTestCaseData(unsigned int testCaseId)
@@ -194,9 +194,9 @@ std::unique_ptr<DeepSpeechV1TestCaseData> DeepSpeechV1Database::GetTestCaseData(
     }
 
     // use the struct for representing input and output data
-    LstmInput inputDataSingleTest(inputSeqData, prevStateCData, prevStateHData);
+    LstmInput inputDataSingleTest(inputSeqData, prevStateHData, prevStateCData);
 
-    LstmInput expectedOutputsSingleTest(logitsData, expectedNewStateCData, expectedNewStateHData);
+    LstmInput expectedOutputsSingleTest(logitsData, expectedNewStateHData, expectedNewStateCData);
 
     return std::make_unique<DeepSpeechV1TestCaseData>(inputDataSingleTest, expectedOutputsSingleTest);
 }
index 6331762..3195d2b 100755 (executable)
@@ -27,12 +27,12 @@ public:
         : InferenceModelTestCase<Model>(model,
                                         testCaseId,
                                         { testCaseData.m_InputData.m_InputSeq,
-                                          testCaseData.m_InputData.m_StateC,
-                                          testCaseData.m_InputData.m_StateH},
+                                          testCaseData.m_InputData.m_StateH,
+                                          testCaseData.m_InputData.m_StateC},
                                         { k_OutputSize1, k_OutputSize2, k_OutputSize3 })
         , m_FloatComparer(boost::math::fpc::percent_tolerance(1.0f))
-        , m_ExpectedOutputs({testCaseData.m_ExpectedOutputData.m_InputSeq, testCaseData.m_ExpectedOutputData.m_StateC,
-                             testCaseData.m_ExpectedOutputData.m_StateH})
+        , m_ExpectedOutputs({testCaseData.m_ExpectedOutputData.m_InputSeq, testCaseData.m_ExpectedOutputData.m_StateH,
+                             testCaseData.m_ExpectedOutputData.m_StateC})
     {}
 
     TestCaseResult ProcessResult(const InferenceTestOptions& options) override
@@ -59,9 +59,9 @@ public:
 
         for (unsigned int j = 0u; j < output2.size(); j++)
         {
-            if(!m_FloatComparer(output2[j], m_ExpectedOutputs.m_StateC[j]))
+            if(!m_FloatComparer(output2[j], m_ExpectedOutputs.m_StateH[j]))
             {
-                BOOST_LOG_TRIVIAL(error) << "StateC for Lstm " << this->GetTestCaseId() <<
+                BOOST_LOG_TRIVIAL(error) << "StateH for Lstm " << this->GetTestCaseId() <<
                                          " is incorrect";
                 return TestCaseResult::Failed;
             }
@@ -69,9 +69,9 @@ public:
 
         for (unsigned int j = 0u; j < output3.size(); j++)
         {
-            if(!m_FloatComparer(output3[j], m_ExpectedOutputs.m_StateH[j]))
+            if(!m_FloatComparer(output3[j], m_ExpectedOutputs.m_StateC[j]))
             {
-                BOOST_LOG_TRIVIAL(error) << "StateH for Lstm " << this->GetTestCaseId() <<
+                BOOST_LOG_TRIVIAL(error) << "StateC for Lstm " << this->GetTestCaseId() <<
                                          " is incorrect";
                 return TestCaseResult::Failed;
             }
@@ -106,20 +106,21 @@ public:
                 ("input-seq-dir,s", po::value<std::string>(&m_InputSeqDir)->required(),
                  "Path to directory containing test data for m_InputSeq");
         options.add_options()
-                ("prev-state-c-dir,c", po::value<std::string>(&m_PrevStateCDir)->required(),
-                 "Path to directory containing test data for m_PrevStateC");
-        options.add_options()
                 ("prev-state-h-dir,h", po::value<std::string>(&m_PrevStateHDir)->required(),
                  "Path to directory containing test data for m_PrevStateH");
         options.add_options()
+                ("prev-state-c-dir,c", po::value<std::string>(&m_PrevStateCDir)->required(),
+                 "Path to directory containing test data for m_PrevStateC");
+        options.add_options()
                 ("logits-dir,l", po::value<std::string>(&m_LogitsDir)->required(),
                  "Path to directory containing test data for m_Logits");
         options.add_options()
-                ("new-state-c-dir,C", po::value<std::string>(&m_NewStateCDir)->required(),
-                 "Path to directory containing test data for m_NewStateC");
-        options.add_options()
                 ("new-state-h-dir,H", po::value<std::string>(&m_NewStateHDir)->required(),
                  "Path to directory containing test data for m_NewStateH");
+        options.add_options()
+                ("new-state-c-dir,C", po::value<std::string>(&m_NewStateCDir)->required(),
+                 "Path to directory containing test data for m_NewStateC");
+
 
         Model::AddCommandLineOptions(options, m_ModelCommandLineOptions);
     }
@@ -161,9 +162,9 @@ public:
         {
             return false;
         }
-        m_Database = std::make_unique<DeepSpeechV1Database>(m_InputSeqDir.c_str(), m_PrevStateCDir.c_str(),
-                                                            m_PrevStateHDir.c_str(), m_LogitsDir.c_str(),
-                                                            m_NewStateCDir.c_str(), m_NewStateHDir.c_str());
+        m_Database = std::make_unique<DeepSpeechV1Database>(m_InputSeqDir.c_str(), m_PrevStateHDir.c_str(),
+                                                            m_PrevStateCDir.c_str(), m_LogitsDir.c_str(),
+                                                            m_NewStateHDir.c_str(), m_NewStateCDir.c_str());
         if (!m_Database)
         {
             return false;
index 31c4d04..0876d26 100755 (executable)
@@ -13,16 +13,16 @@ namespace
 struct LstmInput
 {
     LstmInput(const std::vector<float>& inputSeq,
-              const std::vector<float>& stateC,
-              const std::vector<float>& stateH)
+              const std::vector<float>& stateH,
+              const std::vector<float>& stateC)
             : m_InputSeq(inputSeq)
-            , m_StateC(stateC)
             , m_StateH(stateH)
+            , m_StateC(stateC)
     {}
 
     std::vector<float>        m_InputSeq;
-    std::vector<float>        m_StateC;
     std::vector<float>        m_StateH;
+    std::vector<float>        m_StateC;
 };
 
 using LstmInputs = std::pair<std::string, std::vector<LstmInput>>;