public void GlorotUniformTest()
        {
            var init = new GlorotUniform();
            var m    = init.Initialize(new Matrix(2, 2));

            Assert.IsTrue(Math.Abs(m.FrobeniusNorm()) > 0.01, init.Type().ToString() + " Initializer.");
        }
Exemple #2
0
        /// <summary>
        /// Turns positive integers (indexes) into dense vectors of fixed size. eg. [[4], [20]] -&gt; [[0.25, 0.1], [0.6, -0.2]]. This layer can only be used as the first layer in a model.
        /// </summary>
        /// <param name="shape">The shape of the input.</param>
        /// <param name="embeddingDim">The dim of the output space.</param>
        /// <param name="initializers">The weight initializers for this layer.</param>
        /// <returns></returns>
        public static Function Embedding(Variable layer, int embeddingDim, Initializer initializers = null)
        {
            if (initializers == null)
            {
                initializers = new GlorotUniform();
            }

            var embeddingParameters = new Parameter(new int[] { embeddingDim, layer.Shape[0] }, DataType.Float, initializers.Get(), GlobalParameters.Device);

            return(CNTKLib.Times(embeddingParameters, layer));
        }
Exemple #3
0
        /// <summary>
        /// Turns positive integers (indexes) into dense vectors of fixed size. eg. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]. This layer can only be used as the first layer in a model.
        /// </summary>
        /// <param name="shape">The shape of the input.</param>
        /// <param name="embeddingDim">The dim of the output space.</param>
        /// <param name="initializers">The weight initializers for this layer.</param>
        /// <returns></returns>
        public static Function Embedding(int shape, int embeddingDim, Initializer initializers = null)
        {
            if (initializers == null)
            {
                initializers = new GlorotUniform();
            }

            var input = CNTKLib.InputVariable(new int[] { shape }, true, DataType.Float);
            var embeddingParameters = new Parameter(new int[] { embeddingDim, shape }, DataType.Float, initializers.Get(), GlobalParameters.Device);

            return(CNTKLib.Times(embeddingParameters, input));
        }