From 28d045f8e2b632daed33718f5e3878d1f79c941a Mon Sep 17 00:00:00 2001
From: Hashim Sharif <hsharif3@tyler.cs.illinois.edu>
Date: Sat, 12 Jan 2019 01:19:35 -0600
Subject: [PATCH] Fixing bug in reading labels

---
 .../dnn_sources/include/utils.h               |  22 ++++++++++++++----
 .../datasets/t10k-labels-idx1-ubyte           | Bin 10008 -> 10000 bytes
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/include/utils.h b/llvm/projects/hpvm-tensor-rt/dnn_sources/include/utils.h
index bbbdff5e36..c7ab713823 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/include/utils.h
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/include/utils.h
@@ -217,7 +217,8 @@ void* readInputTensor(char* file_name, int data_type, int dim1_size, int dim2_si
 
 
 
-struct Tensor* readTrainedWeights(char* file_name, int data_type, int dim1_size, int dim2_size,
+struct Tensor* readTrainedWeights(char* file_name, int data_type,
+				  int dim1_size, int dim2_size,
 				  int dim3_size, int dim4_size){
 
   // FIXIT: Don't assume floating point types
@@ -236,7 +237,9 @@ struct Tensor* readTrainedWeights(char* file_name, int data_type, int dim1_size,
   fseek(file, file_header_size, SEEK_CUR); // Skipping the file header
   size_t bytes_read = fread(tensor_data, 1, size_in_bytes, file);
 
-  //printf("tensor_data[%d] = %f \n", num_elems-1, tensor_data[num_elems-1]);
+  for(unsigned i = 0 ; i < 40; i++){
+    printf("tensor_data[%d] = %f \n", i, tensor_data[i]);
+  }
   
   struct Tensor* weights = (struct Tensor*) create4DTensor(data_type, nchw, dim1_size, dim2_size,
 					  dim3_size, dim4_size);
@@ -250,7 +253,7 @@ struct Tensor* readTrainedWeights(char* file_name, int data_type, int dim1_size,
 
 uint8_t* readLabels(char* labels_file, int num_labels){
 
-  int file_header_size = 8;
+  //-- int file_header_size = 8;
   uint8_t* labels = (uint8_t*) malloc(sizeof(uint8_t) * num_labels);
   FILE* file = fopen(labels_file, "rb");
   if(file == NULL){
@@ -258,8 +261,13 @@ uint8_t* readLabels(char* labels_file, int num_labels){
     abort();
   }
 
-  fseek(file, file_header_size, SEEK_CUR); // Skipping the file header
+  //-- fseek(file, file_header_size, SEEK_CUR); // Skipping the file header
   size_t bytes_read = fread(labels, 1, sizeof(uint8_t) * num_labels, file);
+
+  for(unsigned int i = 0 ; i < 20; i++){
+    printf("labels[%d] = %u \n", i, labels[i]);
+  }
+
   printf("--labels bytes_read = %d \n", bytes_read);
   return labels;
 }
@@ -309,6 +317,8 @@ void computeAccuracy(char* labels_file, int num_labels, void* result_ptr){
 
 void computeAccuracy2(uint8_t* labels, int num_labels, void* result_ptr){
 
+  unsigned num_zeros = 0;
+  
   struct Tensor* result = (struct Tensor*) result_ptr;
   
   //uint8_t* labels = readLabels(labels_file, num_labels);
@@ -324,12 +334,16 @@ void computeAccuracy2(uint8_t* labels, int num_labels, void* result_ptr){
     }
     
     //printf("chosen = %d, label = %d \n", chosen, labels[i]);
+    if(labels[i] == 0)
+      num_zeros++;
+      
     if(chosen != labels[i])
       num_errors++;
   }
 
   float accuracy = ((batch_dim - num_errors) * 1.0 / batch_dim * 1.0) * 100.0;
   printf("****** Accuracy = %f \n\n", accuracy);
+  printf("****** Zero class labels %d \n", num_zeros);
 
 
   FILE* fp = fopen("final_accuracy", "w+");
diff --git a/llvm/projects/hpvm-tensor-rt/model_params/lenet_params/datasets/t10k-labels-idx1-ubyte b/llvm/projects/hpvm-tensor-rt/model_params/lenet_params/datasets/t10k-labels-idx1-ubyte
index d1c3a970612bbd2df47a3c0697f82bd394abc450..5e1f3881897f4729d6d90ff208a08ccdabb8fe7c 100644
GIT binary patch
delta 8
PcmbQ?H^FZshk!Z&4)X%F

delta 16
XcmbQ>H^YyEfq{dOfk9nhgMc~!9r6P7

-- 
GitLab