Skip to content
Snippets Groups Projects
Commit 28d045f8 authored by Hashim Sharif's avatar Hashim Sharif
Browse files

Fixing bug in reading labels

parent 80984e6c
No related branches found
No related tags found
No related merge requests found
...@@ -217,7 +217,8 @@ void* readInputTensor(char* file_name, int data_type, int dim1_size, int dim2_si ...@@ -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){ int dim3_size, int dim4_size){
// FIXIT: Don't assume floating point types // FIXIT: Don't assume floating point types
...@@ -236,7 +237,9 @@ struct Tensor* readTrainedWeights(char* file_name, int data_type, int dim1_size, ...@@ -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 fseek(file, file_header_size, SEEK_CUR); // Skipping the file header
size_t bytes_read = fread(tensor_data, 1, size_in_bytes, file); 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, struct Tensor* weights = (struct Tensor*) create4DTensor(data_type, nchw, dim1_size, dim2_size,
dim3_size, dim4_size); dim3_size, dim4_size);
...@@ -250,7 +253,7 @@ struct Tensor* readTrainedWeights(char* file_name, int data_type, int dim1_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){ 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); uint8_t* labels = (uint8_t*) malloc(sizeof(uint8_t) * num_labels);
FILE* file = fopen(labels_file, "rb"); FILE* file = fopen(labels_file, "rb");
if(file == NULL){ if(file == NULL){
...@@ -258,8 +261,13 @@ uint8_t* readLabels(char* labels_file, int num_labels){ ...@@ -258,8 +261,13 @@ uint8_t* readLabels(char* labels_file, int num_labels){
abort(); 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); 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); printf("--labels bytes_read = %d \n", bytes_read);
return labels; return labels;
} }
...@@ -309,6 +317,8 @@ void computeAccuracy(char* labels_file, int num_labels, void* result_ptr){ ...@@ -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){ void computeAccuracy2(uint8_t* labels, int num_labels, void* result_ptr){
unsigned num_zeros = 0;
struct Tensor* result = (struct Tensor*) result_ptr; struct Tensor* result = (struct Tensor*) result_ptr;
//uint8_t* labels = readLabels(labels_file, num_labels); //uint8_t* labels = readLabels(labels_file, num_labels);
...@@ -324,12 +334,16 @@ void computeAccuracy2(uint8_t* labels, int num_labels, void* result_ptr){ ...@@ -324,12 +334,16 @@ void computeAccuracy2(uint8_t* labels, int num_labels, void* result_ptr){
} }
//printf("chosen = %d, label = %d \n", chosen, labels[i]); //printf("chosen = %d, label = %d \n", chosen, labels[i]);
if(labels[i] == 0)
num_zeros++;
if(chosen != labels[i]) if(chosen != labels[i])
num_errors++; num_errors++;
} }
float accuracy = ((batch_dim - num_errors) * 1.0 / batch_dim * 1.0) * 100.0; float accuracy = ((batch_dim - num_errors) * 1.0 / batch_dim * 1.0) * 100.0;
printf("****** Accuracy = %f \n\n", accuracy); printf("****** Accuracy = %f \n\n", accuracy);
printf("****** Zero class labels %d \n", num_zeros);
FILE* fp = fopen("final_accuracy", "w+"); FILE* fp = fopen("final_accuracy", "w+");
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment