1 #ifndef RKQSLRMXHSPFGGPQCNEPEBAKCXHNXQPMXETNTTXBWEWBIQHVCFRKRFSFMLXXXRYFUKHEXYIGL
2 #define RKQSLRMXHSPFGGPQCNEPEBAKCXHNXQPMXETNTTXBWEWBIQHVCFRKRFSFMLXXXRYFUKHEXYIGL
6 #include "./utils/better_assert.hpp"
7 #include "./utils/for_each.hpp"
27 inline auto load_data( std::string
const& path = std::string{
"./dataset/mnist"} )
29 std::string
const training_image_path = path + std::string{
"/train-images-idx3-ubyte"};
30 std::string
const training_label_path = path + std::string{
"/train-labels-idx1-ubyte"};
31 std::string
const test_image_path = path + std::string{
"/t10k-images-idx3-ubyte"};
32 std::string
const test_label_path = path + std::string{
"/t10k-labels-idx1-ubyte"};
34 auto const& load_binary = []( std::string
const& filename )
36 std::ifstream ifs( filename, std::ios::binary );
37 better_assert( ifs.good(),
"Failed to load data from ", filename );
38 std::vector<char> buff{ ( std::istreambuf_iterator<char>( ifs ) ), ( std::istreambuf_iterator<char>() ) };
39 std::vector<std::uint8_t> ans( buff.size() );
40 std::copy( buff.begin(), buff.end(),
reinterpret_cast<char*
>( ans.data() ) );
44 auto const& extract_image = []( std::vector<std::uint8_t>
const& image_data )
46 unsigned long const offset = 16;
47 unsigned long const samples = (image_data.size()-offset) / (28*28);
48 tensor<std::uint8_t> ans{ {samples, 28, 28} };
49 std::copy( image_data.begin()+offset, image_data.end(), ans.data() );
53 auto const& extract_label = []( std::vector<std::uint8_t>
const& label_data )
55 unsigned long const offset = 8;
56 unsigned long const samples = label_data.size() - offset;
57 auto ans = zeros<std::uint8_t>({samples, 10});
58 auto ans_2d =
matrix{ ans.data(), samples, 10 };
59 for (
auto idx : range( samples ) )
60 ans_2d[idx][label_data[idx+offset]] = 1;
64 return std::make_tuple( extract_image(load_binary(training_image_path)),
65 extract_label(load_binary(training_label_path)),
66 extract_image(load_binary(test_image_path)),
67 extract_label(load_binary(test_label_path)) );
71 namespace fashion_mnist
98 inline auto load_data( std::string
const& path = std::string{
"./dataset/fashion_mnist"} )
100 std::string
const training_image_path = path + std::string{
"/train-images-idx3-ubyte"};
101 std::string
const training_label_path = path + std::string{
"/train-labels-idx1-ubyte"};
102 std::string
const test_image_path = path + std::string{
"/t10k-images-idx3-ubyte"};
103 std::string
const test_label_path = path + std::string{
"/t10k-labels-idx1-ubyte"};
105 auto const& load_binary = []( std::string
const& filename )
107 std::ifstream ifs( filename, std::ios::binary );
108 better_assert( ifs.good(),
"Failed to load data from ", filename );
109 std::vector<char> buff{ ( std::istreambuf_iterator<char>( ifs ) ), ( std::istreambuf_iterator<char>() ) };
110 std::vector<std::uint8_t> ans( buff.size() );
111 std::copy( buff.begin(), buff.end(),
reinterpret_cast<char*
>( ans.data() ) );
115 auto const& extract_image = []( std::vector<std::uint8_t>
const& image_data )
117 unsigned long const offset = 16;
118 unsigned long const samples = (image_data.size()-offset) / (28*28);
119 tensor<std::uint8_t> ans{ {samples, 28, 28} };
120 std::copy( image_data.begin()+offset, image_data.end(), ans.data() );
124 auto const& extract_label = []( std::vector<std::uint8_t>
const& label_data )
126 unsigned long const offset = 8;
127 unsigned long const samples = label_data.size() - offset;
128 auto ans = zeros<std::uint8_t>({samples, 10});
129 auto ans_2d =
matrix{ ans.data(), samples, 10 };
130 for (
auto idx : range( samples ) )
131 ans_2d[idx][label_data[idx+offset]] = 1;
135 return std::make_tuple( extract_image(load_binary(training_image_path)),
136 extract_label(load_binary(training_label_path)),
137 extract_image(load_binary(test_image_path)),
138 extract_label(load_binary(test_label_path)) );
147 inline auto load_data( std::string
const& path = std::string{} )
154 inline auto load_data( std::string
const& path = std::string{} )
161 inline auto load_data( std::string
const& path = std::string{} )
168 inline auto load_data( std::string
const& path = std::string{} )
173 namespace boston_housing
175 inline auto load_data( std::string
const& path = std::string{} )
auto load_data(std::string const &path=std::string{"./dataset/fashion_mnist"})
Definition: dataset.hpp:98
auto load_data(std::string const &path=std::string{"./dataset/mnist"})
Definition: dataset.hpp:27
Definition: dataset.hpp:10
view_2d< T > matrix
Definition: tensor.hpp:478
Tsor copy(Tsor const &tsor)
Definition: tensor.hpp:908