22 const std::vector<double> mean_gold = {0.0, -1.0};
23 const std::vector<double> stddev_gold = {1.0, 0.0};
25 torch::Tensor input_tensor = torch::tensor(
26 {{1.0, -1.0}, {-1.0, -1.0}, {1.0, -1.0}, {-1.0, -1.0}, {1.0, -1.0}, {-1.0, -1.0}},
32 const auto mean = standardizer.getMean();
33 const auto stddev = standardizer.getStdDev();
35 ASSERT_EQ(mean.dim(), 1);
36 ASSERT_EQ(stddev.dim(), 1);
37 ASSERT_EQ(
static_cast<std::size_t
>(mean.size(0)), mean_gold.size());
38 ASSERT_EQ(
static_cast<std::size_t
>(stddev.size(0)), stddev_gold.size());
40 const auto mean_accessor = mean.accessor<Real, 1>();
41 const auto stddev_accessor = stddev.accessor<Real, 1>();
42 for (std::size_t i = 0; i < mean_gold.size(); ++i)
43 EXPECT_EQ(mean_accessor[i], mean_gold[i]);
44 for (std::size_t i = 0; i < stddev_gold.size(); ++i)
45 EXPECT_EQ(stddev_accessor[i], stddev_gold[i]);
50 torch::Tensor input_tensor = torch::tensor({{1.0, -1.0}, {-1.0, 1.0}}, {torch::kFloat64});
51 const auto gold = torch::tensor({{1.0, -1.0}, {-1.0, 1.0}}, {torch::kFloat64});
55 standardizer.getStandardized(input_tensor);
57 EXPECT_TRUE(torch::allclose(input_tensor, gold));
62 torch::Tensor input_tensor = torch::tensor({{1.0, -1.0}, {-1.0, 1.0}}, {torch::kFloat64});
63 const auto gold = torch::tensor({{1.0, -1.0}, {-1.0, 1.0}}, {torch::kFloat64});
67 standardizer.getStandardized(input_tensor);
68 standardizer.getDestandardized(input_tensor);
70 EXPECT_TRUE(torch::allclose(input_tensor, gold));
75 torch::Tensor input_tensor = torch::tensor({{1.0, -1.0}, {1.0, 1.0}}, {torch::kFloat64});
76 const auto gold = torch::tensor({{0.0, -1.0}, {0.0, 1.0}}, {torch::kFloat64});
80 standardizer.getDescaled(input_tensor);
82 EXPECT_TRUE(torch::allclose(input_tensor, gold));
87 torch::Tensor input_tensor = torch::tensor({{4.0, -8.0}, {-4.0, 8.0}}, {torch::kFloat64});
88 const auto reference = torch::tensor({{2.0, -4.0}, {-2.0, 4.0}}, {torch::kFloat64});
89 const auto gold = torch::tensor({{2.0, -2.0}, {-2.0, 2.0}}, {torch::kFloat64});
93 standardizer.getScaled(input_tensor);
95 EXPECT_TRUE(torch::allclose(input_tensor, gold));
100 torch::Tensor stored = torch::tensor({{1.0, 2.0, 3.0}, {-4.0, -5.0, -6.0}}, {torch::kFloat64});
102 std::stringbuf buffer;
103 std::iostream stream(&buffer);
106 torch::Tensor loaded;
109 ASSERT_EQ(loaded.size(0), stored.size(0));
110 ASSERT_EQ(loaded.size(1), stored.size(1));
111 EXPECT_TRUE(torch::allclose(loaded, stored));
116 torch::Tensor stored = torch::tensor(3.25, {torch::kFloat64});
118 std::stringbuf buffer;
119 std::iostream stream(&buffer);
122 torch::Tensor loaded;
125 ASSERT_EQ(loaded.dim(), stored.dim());
126 EXPECT_TRUE(torch::allclose(loaded, stored));
131 torch::Tensor stored = torch::tensor({1.0, -2.0, 3.5, 7.0}, {torch::kFloat64});
133 std::stringbuf buffer;
134 std::iostream stream(&buffer);
137 torch::Tensor loaded;
140 ASSERT_EQ(loaded.dim(), stored.dim());
141 ASSERT_EQ(loaded.size(0), stored.size(0));
142 EXPECT_TRUE(torch::allclose(loaded, stored));
147 const torch::Tensor base =
148 torch::tensor({{1.0, 2.0, 3.0}, {-4.0, -5.0, -6.0}}, {torch::kFloat64});
149 torch::Tensor stored = torch::transpose(base, 0, 1);
151 ASSERT_FALSE(stored.is_contiguous());
153 std::stringbuf buffer;
154 std::iostream stream(&buffer);
157 torch::Tensor loaded;
160 ASSERT_EQ(loaded.size(0), stored.size(0));
161 ASSERT_EQ(loaded.size(1), stored.size(1));
162 EXPECT_TRUE(torch::allclose(loaded, stored));
167 torch::Tensor input_tensor =
168 torch::tensor({{3.0, 1.0}, {5.0, -1.0}, {7.0, 3.0}}, {torch::kFloat64});
173 std::stringbuf buffer;
174 std::iostream stream(&buffer);
180 EXPECT_TRUE(torch::allclose(loaded.
getMean(), stored.getMean()));
181 EXPECT_TRUE(torch::allclose(loaded.
getStdDev(), stored.getStdDev()));