def testTwoByTwoTwoOutputs(self): lattice_param = lattice_layers.lattice_param_as_linear( lattice_sizes=[2, 2], output_dim=2, linear_weights=[[1.0, 1.0], [-0.1, 0.3]]) self.assertAllClose( [[-0.5, 0.0, 0.0, 0.5], [-0.5, -0.55, -0.35, -0.4]], lattice_param)
def testTwoByThreeByTwoOneOutput(self): lattice_param = lattice_layers.lattice_param_as_linear( lattice_sizes=[2, 3, 2], output_dim=1, linear_weights=[-1.0, 1.0, 1.0]) self.assertAllClose([[ -0.1666667, -0.5, 0.0, -0.3333333, 0.1666667, -0.1666667, 0.1666667, -0.1666667, 0.3333333, 0.0, 0.5, 0.1666667 ]], lattice_param)
def testSimplexEvaluationWithLinearParam(self): lattice_sizes = [2, 3] output_dim = 2 inputs = [[0.0, 0.0], [0.1, 0.9], [0.3, 1.1], [1.5, 2.0]] # This parameter works as linear functions # f(x1, x2) = [0.5 * (x1 + x2) - 0.5, x1 + x2 - 0.5] parameters = lattice_layers.lattice_param_as_linear( lattice_sizes=lattice_sizes, output_dim=2, linear_weights=[[1.0, 2.0], [2.0, 4.0]]) expected_outputs = [[-0.5, -0.5], [0.0, 0.5], [0.2, 0.9], [1.0, 2.5]] self._testLatticeLayerEvaluation(interpolation_type='simplex', output_dim=output_dim, lattice_sizes=lattice_sizes, inputs=inputs, parameters=parameters, expected_outputs=expected_outputs)
def testHypercubeEvaluationWithLinearParam(self): lattice_sizes = [2, 3] output_dim = 2 inputs = [[0.0, 0.0], [0.1, 0.9], [0.3, 1.1], [1.5, 2.0]] # This parameter works as a linear function # f(x1, x2) == 1/2 * (x1 + x2) - 0.5 parameters = lattice_layers.lattice_param_as_linear( lattice_sizes=lattice_sizes, linear_weights=[1.0, 2.0], output_dim=2) expected_outputs = [[-0.5, -0.5], [0.0, 0.0], [0.2, 0.2], [1.0, 1.0]] self._testLatticeLayerEvaluation(interpolation_type='hypercube', output_dim=output_dim, lattice_sizes=lattice_sizes, inputs=inputs, parameters=parameters, expected_outputs=expected_outputs)
def testWrongLinearWeightsExpectError(self): with self.assertRaises(ValueError): _ = lattice_layers.lattice_param_as_linear(lattice_sizes=[2, 2], output_dim=2, linear_weights=[[1], [1, 2]])
def testMoreLinearWeightsThanLatticeRankExpectError(self): with self.assertRaises(ValueError): _ = lattice_layers.lattice_param_as_linear( lattice_sizes=[2, 2], output_dim=1, linear_weights=[1, 2, 3])
def testEmptyLatticeSizesExpectError(self): with self.assertRaises(ValueError): _ = lattice_layers.lattice_param_as_linear(lattice_sizes=[], output_dim=1)
def testTwoByTwoOneOutput(self): lattice_param = lattice_layers.lattice_param_as_linear( lattice_sizes=[2, 2], output_dim=1) self.assertAllClose([[-0.5, 0.0, 0.0, 0.5]], lattice_param)