예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
 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]])
예제 #6
0
 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])
예제 #7
0
 def testEmptyLatticeSizesExpectError(self):
     with self.assertRaises(ValueError):
         _ = lattice_layers.lattice_param_as_linear(lattice_sizes=[],
                                                    output_dim=1)
예제 #8
0
 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)