25 #include <gtest/gtest.h>
29 #include <boost/archive/text_iarchive.hpp>
30 #include <boost/archive/text_oarchive.hpp>
33 #define private public
40 TEST(Tensor, Dimensions2x5) {
48 ASSERT_EQ(nm.dim(0), N);
49 ASSERT_EQ(nm.dim(1), M);
50 ASSERT_EQ(nm.dim(2), K);
57 TEST(Tensor, Enumeration2x3) {
67 for (
size_t i =0; i< N*M; i++)
76 ASSERT_EQ(nm({0,0}), 0);
77 ASSERT_EQ(nm({1,0}), 1);
78 ASSERT_EQ(nm({0,1}), 2);
79 ASSERT_EQ(nm({1,1}), 3);
80 ASSERT_EQ(nm({0,2}), 4);
81 ASSERT_EQ(nm({1,2}), 5);
89 TEST(Tensor, Serialization) {
98 const char* fileName =
"saved.txt";
102 std::ofstream ofs(fileName);
103 boost::archive::text_oarchive ar(ofs);
111 restored_tensor.
randn();
115 std::ifstream ifs(fileName);
116 boost::archive::text_iarchive ar(ifs);
118 ar & restored_tensor;
123 ASSERT_EQ(nm.elements, restored_tensor.
elements);
124 ASSERT_EQ(nm.dimensions.size(), restored_tensor.
dimensions.size());
125 for (
size_t i =0; i< (size_t)nm.dimensions.size(); i++)
126 ASSERT_EQ(nm.dimensions[i], restored_tensor.
dimensions[i]);
130 for (
size_t i =0; i< (size_t)nm.size(); i++)
131 EXPECT_LE(fabs(nm(i) - restored_tensor(i)), eps);
149 int main(
int argc,
char **argv) {
150 testing::InitGoogleTest(&argc, argv);
151 return RUN_ALL_TESTS();
int main(int argc, char **argv)
std::vector< size_t > dimensions
void randn(T mean=0, T stddev=1)
Template class representing an nD (n-Dimensional) tensor. Tensor is row-major, i.e. first dimension is height (rows), second is width (cols), third is depth (channels) etc.
TEST(Tensor, Dimensions2x5)
File contaning a template tensor class.