Пример #1
0
int ErrorData::readH5(hid_t group_id) {

  // Read all the data
  hid_t dataset_id;
  vector<unsigned int> region_origin(2,0);
  dataset_id = H5Dopen2(group_id,"region_origin",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &region_origin[0]);
  H5Dclose(dataset_id);
  vector<unsigned int> region_dim(2,0);
  dataset_id = H5Dopen2(group_id,"region_dim",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &region_dim[0]);
  H5Dclose(dataset_id);
  vector<unsigned int> error_data_dim(2,0);
  dataset_id = H5Dopen2(group_id,"error_data_dim",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &error_data_dim[0]);
  H5Dclose(dataset_id);
  if(error_data_dim[0] != ERROR_DATA_N_ROWS)
    return(EXIT_FAILURE);

  vector<uint64_t> error_data(error_data_dim[0]*error_data_dim[1],0);
  dataset_id = H5Dopen2(group_id,"error_data",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT_LEAST64, H5S_ALL, H5S_ALL, H5P_DEFAULT, &error_data[0]);
  H5Dclose(dataset_id);

  // Store data in object
  Initialize(region_origin,region_dim,error_data_dim,error_data);

  return(EXIT_SUCCESS);
}
Пример #2
0
Vector< Matrix<double> > TestingAnalysis::calculate_error_data(void) const
{
   // Data set stuff

   #ifndef NDEBUG

   check();

   #endif

   const unsigned testing_instances_number = data_set_pointer->get_instances().count_testing_instances_number();

    #ifndef NDEBUG

    std::ostringstream buffer;

    if(testing_instances_number == 0)
    {
       buffer << "OpenNN Exception: TestingAnalysis class.\n"
              << "Vector< Matrix<double> > calculate_error_data(void) const.\n"
              << "Number of testing instances is zero.\n";

       throw std::logic_error(buffer.str());
    }

    #endif


   const Matrix<double> input_data = data_set_pointer->arrange_testing_input_data();

   const Matrix<double> target_data = data_set_pointer->arrange_testing_target_data();

   // Neural network stuff

   const Matrix<double> output_data = neural_network_pointer->calculate_output_data(input_data);

   const UnscalingLayer* unscaling_layer_pointer = neural_network_pointer->get_unscaling_layer_pointer();

   #ifndef NDEBUG

   if(!unscaling_layer_pointer)
   {
      buffer << "OpenNN Exception: TestingAnalysis class.\n"
             << "Vector< Matrix<double> > calculate_error_data(void) const.\n"
             << "Unscaling layer is NULL.\n";

      throw std::logic_error(buffer.str());
   }

   #endif

   const Vector<double>& outputs_minimum = unscaling_layer_pointer->arrange_minimums();
   const Vector<double>& outputs_maximum = unscaling_layer_pointer->arrange_maximums();

   const unsigned outputs_number = unscaling_layer_pointer->get_unscaling_neurons_number();

   // Error data

   Vector< Matrix<double> > error_data(outputs_number);

   Vector<double> targets(testing_instances_number);
   Vector<double> outputs(testing_instances_number);

   for(unsigned i = 0; i < outputs_number; i++)
   {
       error_data[i].set(testing_instances_number, 3, 0.0);

       // Absolute error

       targets = target_data.arrange_column(i);
       outputs = output_data.arrange_column(i);

       error_data[i].set_column(0, (targets - outputs).calculate_absolute_value());

       // Relative error

       error_data[i].set_column(1, (targets - outputs).calculate_absolute_value()/(outputs_maximum[i]-outputs_minimum[i]));

       // Percentage error

       error_data[i].set_column(2, (targets - outputs).calculate_absolute_value()*100.0/(outputs_maximum[i]-outputs_minimum[i]));
    }

   return(error_data);
}