Exemplo n.º 1
0
        public virtual void TestAddSparseToDense(double[] dense1, int sparseIndex, double v)
        {
            ConcatVector v1 = new ConcatVector(1);

            v1.SetDenseComponent(0, dense1);
            ConcatVector v2 = new ConcatVector(1);

            v2.SetSparseComponent(0, (int)sparseIndex, v);
            double expected = v1.DotProduct(v2) + 0.7f * (v2.DotProduct(v2));

            v1.AddVectorInPlace(v2, 0.7f);
            NUnit.Framework.Assert.AreEqual(v1.DotProduct(v2), 5.0e-4, expected);
        }
Exemplo n.º 2
0
        public virtual void TestAddSparseToSparse(int sparseIndex1, double val1, int sparseIndex2, double val2)
        {
            ConcatVector v1 = new ConcatVector(1);

            v1.SetSparseComponent(0, (int)sparseIndex1, val1);
            ConcatVector v2 = new ConcatVector(1);

            v2.SetSparseComponent(0, (int)sparseIndex2, val2);
            double expected = v1.DotProduct(v2) + 0.7f * (v2.DotProduct(v2));

            v1.AddVectorInPlace(v2, 0.7f);
            NUnit.Framework.Assert.AreEqual(v1.DotProduct(v2), 5.0e-3, expected);
        }
Exemplo n.º 3
0
        public virtual void TestCopyOnWrite(ConcatVectorTest.DenseTestVector d1)
        {
            ConcatVector v2 = d1.vector.DeepClone();

            v2.AddVectorInPlace(v2, 1.0);
            for (int i = 0; i < d1.values.Length; i++)
            {
                for (int j = 0; j < d1.values[i].Length; j++)
                {
                    NUnit.Framework.Assert.AreEqual(d1.vector.GetValueAt(i, j), 5.0e-4, d1.values[i][j]);
                    NUnit.Framework.Assert.AreEqual(v2.GetValueAt(i, j), 5.0e-4, d1.values[i][j] * 2);
                }
            }
        }
Exemplo n.º 4
0
        public virtual void TestValueEquals(ConcatVectorTest.DenseTestVector d1)
        {
            ConcatVector clone = d1.vector.DeepClone();

            NUnit.Framework.Assert.IsTrue(clone.ValueEquals(d1.vector, 1.0e-5));
            NUnit.Framework.Assert.IsTrue(d1.vector.ValueEquals(clone, 1.0e-5));
            NUnit.Framework.Assert.IsTrue(d1.vector.ValueEquals(d1.vector, 1.0e-5));
            NUnit.Framework.Assert.IsTrue(clone.ValueEquals(clone, 1.0e-5));
            Random r    = new Random();
            int    size = clone.GetNumberOfComponents();

            if (size > 0)
            {
                clone.AddVectorInPlace(d1.vector, 1.0);
                // If the clone is a 0 vector
                bool isZero = true;
                foreach (double[] arr in d1.values)
                {
                    foreach (double d in arr)
                    {
                        if (d != 0)
                        {
                            isZero = false;
                        }
                    }
                }
                if (isZero)
                {
                    NUnit.Framework.Assert.IsTrue(clone.ValueEquals(d1.vector, 1.0e-5));
                    NUnit.Framework.Assert.IsTrue(d1.vector.ValueEquals(clone, 1.0e-5));
                }
                else
                {
                    NUnit.Framework.Assert.IsFalse(clone.ValueEquals(d1.vector, 1.0e-5));
                    NUnit.Framework.Assert.IsFalse(d1.vector.ValueEquals(clone, 1.0e-5));
                }
                NUnit.Framework.Assert.IsTrue(d1.vector.ValueEquals(d1.vector, 1.0e-5));
                NUnit.Framework.Assert.IsTrue(clone.ValueEquals(clone, 1.0e-5));
                // refresh the clone
                clone = d1.vector.DeepClone();
                int tinker = r.NextInt(size);
                d1.vector.SetDenseComponent(tinker, new double[] { 0, 0, 1 });
                clone.SetSparseComponent(tinker, 2, 1);
                NUnit.Framework.Assert.IsTrue(d1.vector.ValueEquals(clone, 1.0e-5));
                NUnit.Framework.Assert.IsTrue(clone.ValueEquals(d1.vector, 1.0e-5));
            }
        }
Exemplo n.º 5
0
        public virtual void TestResizeOnSetComponent(IDictionary <int, int> featureMap1, IDictionary <int, int> featureMap2)
        {
            ConcatVectorNamespace @namespace = new ConcatVectorNamespace();
            ConcatVector          namespace1 = ToNamespaceVector(@namespace, (IDictionary <int, int>)featureMap1);
            ConcatVector          namespace2 = ToNamespaceVector(@namespace, (IDictionary <int, int>)featureMap2);
            ConcatVector          regular1   = ToVector((IDictionary <int, int>)featureMap1);
            ConcatVector          regular2   = ToVector((IDictionary <int, int>)featureMap2);

            NUnit.Framework.Assert.AreEqual(namespace1.DotProduct(namespace2), 1.0e-5, regular1.DotProduct(regular2));
            ConcatVector namespaceSum = namespace1.DeepClone();

            namespaceSum.AddVectorInPlace(namespace2, 1.0);
            ConcatVector regularSum = regular1.DeepClone();

            regularSum.AddVectorInPlace(regular2, 1.0);
            NUnit.Framework.Assert.AreEqual(namespace1.DotProduct(namespaceSum), 1.0e-5, regular1.DotProduct(regularSum));
            NUnit.Framework.Assert.AreEqual(namespaceSum.DotProduct(namespace2), 1.0e-5, regularSum.DotProduct(regular2));
        }