/* * File: DifferentiableGeneralizedLinearModelTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright February 28, 2007, Sandia Corporation. Under the terms of Contract * DE-AC04-94AL85000, there is a non-exclusive license for use of this work by * or on behalf of the U.S. Government. Export of this program may require a * license from the United States Government. See CopyrightHistory.txt for * complete details. * */ package gov.sandia.cognition.learning.function.vector; import gov.sandia.cognition.learning.algorithm.gradient.GradientDescendableTestHarness; import gov.sandia.cognition.learning.function.scalar.IdentityScalarFunction; import gov.sandia.cognition.learning.function.scalar.SigmoidFunction; import gov.sandia.cognition.math.matrix.DifferentiableVectorFunction; import gov.sandia.cognition.math.matrix.VectorFactory; import gov.sandia.cognition.math.matrix.Vector; import gov.sandia.cognition.math.matrix.VectorFunction; /** * Unit tests for DifferentiableGeneralizedLinearModelTest * * @author Kevin R. Dixon * @since 1.0 */ public class DifferentiableGeneralizedLinearModelTest extends GeneralizedLinearModelTest { public DifferentiableGeneralizedLinearModelTest( String testName) { super(testName); } public void testConstructors() { System.out.println( "Constructors" ); DifferentiableGeneralizedLinearModel f = new DifferentiableGeneralizedLinearModel(); assertEquals( 1, f.getInputDimensionality() ); assertEquals( 1, f.getOutputDimensionality() ); assertNotNull( f.getSquashingFunction() ); assertTrue(f.getSquashingFunction() instanceof ElementWiseVectorFunction); assertTrue(((ElementWiseVectorFunction) f.getSquashingFunction()).getScalarFunction() instanceof IdentityScalarFunction); SigmoidFunction s = new SigmoidFunction(); f = new DifferentiableGeneralizedLinearModel(5, 2, s); assertEquals(5, f.getInputDimensionality()); assertEquals(2, f.getOutputDimensionality()); assertTrue(f.getSquashingFunction() instanceof ElementWiseVectorFunction); assertSame(s, ((ElementWiseVectorFunction) f.getSquashingFunction()).getScalarFunction()); MultivariateDiscriminant d = new MultivariateDiscriminant(3, 4); f = new DifferentiableGeneralizedLinearModel(d, s); assertEquals(3, f.getInputDimensionality()); assertEquals(4, f.getOutputDimensionality()); assertSame(d, f.getDiscriminant()); assertTrue(f.getSquashingFunction() instanceof ElementWiseVectorFunction); assertSame(s, ((ElementWiseVectorFunction) f.getSquashingFunction()).getScalarFunction()); DifferentiableVectorFunction v = new LinearVectorFunction(); f = new DifferentiableGeneralizedLinearModel(d, v); assertEquals(3, f.getInputDimensionality()); assertEquals(4, f.getOutputDimensionality()); assertSame(d, f.getDiscriminant()); assertSame(v, f.getSquashingFunction()); f = new DifferentiableGeneralizedLinearModel(f); assertEquals(3, f.getInputDimensionality()); assertEquals(4, f.getOutputDimensionality()); assertNotSame(d, f.getDiscriminant()); assertEquals(d.convertToVector(), f.getDiscriminant().convertToVector()); assertSame(v, f.getSquashingFunction()); } /** * Test of getSquashingFunction method, of class gov.sandia.isrc.learning.util.function.DifferentiableGeneralizedLinearModelTest. */ public void testDiffyGetSquashingFunction() { System.out.println("getSquashingFunction"); DifferentiableGeneralizedLinearModel instance = this.createRandom(); assertNotNull( instance.getSquashingFunction() ); } /** * Test of computeParameterGradient method, of class gov.sandia.isrc.learning.util.function.DifferentiableGeneralizedLinearModelTest. */ public void testComputeParameterGradient() { System.out.println("computeParameterGradient"); double A = 1.0; for( int i = 0; i < 10; i++ ) { DifferentiableGeneralizedLinearModel instance = this.createRandom(); int N = instance.getDiscriminant().getDiscriminant().getNumColumns(); Vector input = VectorFactory.getDefault().createUniformRandom( N, -A, A, random ); GradientDescendableTestHarness.testGradient( instance, input ); } } }