コード例 #1
0
        public virtual void TestElementwiseProduct(ConcatVectorTest.DenseTestVector d1, ConcatVectorTest.DenseTestVector d2)
        {
            for (int i = 0; i < d1.values.Length; i++)
            {
                for (int j = 0; j < d1.values[i].Length; j++)
                {
                    Assume.AssumeTrue(d1.values[i][j] == d1.vector.GetValueAt(i, j));
                }
            }
            for (int i_1 = 0; i_1 < d2.values.Length; i_1++)
            {
                for (int j = 0; j < d2.values[i_1].Length; j++)
                {
                    Assume.AssumeTrue(d2.values[i_1][j] == d2.vector.GetValueAt(i_1, j));
                }
            }
            ConcatVector clone = d1.vector.DeepClone();

            clone.ElementwiseProductInPlace(d2.vector);
            for (int i_2 = 0; i_2 < d1.values.Length; i_2++)
            {
                for (int j = 0; j < d1.values[i_2].Length; j++)
                {
                    double val = 0.0f;
                    if (i_2 < d2.values.Length)
                    {
                        if (j < d2.values[i_2].Length)
                        {
                            val = d1.values[i_2][j] * d2.values[i_2][j];
                        }
                    }
                    NUnit.Framework.Assert.AreEqual(clone.GetValueAt(i_2, j), 5.0e-4, val);
                }
            }
        }
コード例 #2
0
        public virtual void TestDeepCloneGetValueAt(ConcatVectorTest.DenseTestVector d1)
        {
            ConcatVector mv    = d1.vector;
            ConcatVector clone = d1.vector.DeepClone();

            for (int i = 0; i < d1.values.Length; i++)
            {
                for (int j = 0; j < d1.values[i].Length; j++)
                {
                    NUnit.Framework.Assert.AreEqual(clone.GetValueAt(i, j), 1.0e-10, mv.GetValueAt(i, j));
                }
            }
        }
コード例 #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);
                }
            }
        }
コード例 #4
0
 /// <summary>This writes a feature's individual value, using the human readable name if possible, to a StringBuilder</summary>
 /// <exception cref="System.IO.IOException"/>
 private void DebugFeatureValue(string feature, int index, ConcatVector vector, BufferedWriter bw)
 {
     bw.Write("\t");
     if (sparseFeatureIndex.Contains(feature) && sparseFeatureIndex[feature].Values.Contains(index))
     {
         // we can map this index to an interpretable string, so we do
         bw.Write(reverseSparseFeatureIndex[feature][index]);
     }
     else
     {
         // we can't map this to a useful string, so we default to the number
         bw.Write(int.ToString(index));
     }
     bw.Write(": ");
     bw.Write(double.ToString(vector.GetValueAt(featureToIndex[feature], index)));
     bw.Write("\n");
 }
コード例 #5
0
        public virtual void TestElementwiseSparseToSparse(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);
            v1.ElementwiseProductInPlace(v2);
            for (int i = 0; i < 10; i++)
            {
                double expected = 0.0f;
                if (i == sparseIndex1 && i == sparseIndex2)
                {
                    expected = val1 * val2;
                }
                NUnit.Framework.Assert.AreEqual(v1.GetValueAt(0, i), 5.0e-4, expected);
            }
        }
コード例 #6
0
        public virtual void TestElementwiseSparseToDense(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);
            v1.ElementwiseProductInPlace(v2);
            for (int i = 0; i < dense1.Length; i++)
            {
                double expected = 0.0f;
                if (i == sparseIndex)
                {
                    expected = dense1[i] * v;
                }
                NUnit.Framework.Assert.AreEqual(v1.GetValueAt(0, i), 5.0e-4, expected);
            }
        }