ofstream& operator<< (ofstream& out, Dataset& ds)
{
    unsigned int size = ds.size();  //
    unsigned int input_size = ds.GetInputSize();
    unsigned int output_size = ds.GetOutputSize();
    out << input_size << " " << output_size << endl;
    for (unsigned int i = 0; i < size; i++) { //
    	Sample* s = ds[i];
    	for (unsigned int j = 0; j < input_size; j++) {
    		out << s->GetInput(j) << " ";
    	}
    	for (unsigned int j = 0; j < output_size; j++) {
    		out << s->GetOutput(j) << " ";
    	}
    	out << endl;
    }

    return out;
}