Esempio n. 1
0
        /// <summary>
        /// 更改节点值
        /// </summary>
        /// <param name="index"></param>
        /// <param name="weight"></param>
        public void Change(int index, T val)
        {
            MyLineTreeNode <T> parent = Root;

            //通过循环找到索引所在的节点
            do
            {
                int mid = (parent.StartIndex + parent.EndIndex) / 2;
                if (index <= mid)
                {
                    parent = parent.Left;
                }
                else
                {
                    parent = parent.Right;
                }
            } while (parent.StartIndex != index || parent.EndIndex != index);
            //更改所在节点的值
            parent.SavedVal = val;

            //更改所在节点的值之后,需要调整所有父节点的值(通过不断和右边节点比较)
            while (parent.Parent != null)
            {
                MyLineTreeNode <T> temp = parent.Parent;
                temp.SavedVal = CompareFunction.Invoke(temp.Left.SavedVal, temp.Right.SavedVal) ? temp.Left.SavedVal : temp.Right.SavedVal;
                parent        = temp;
            }
        }
        internal CNTK.Function ToFunction(Variable labels, Variable predictions)
        {
            var function = LabelPredictionFunction?.Invoke(labels, predictions);

            if (ReferenceEquals(function, null))
            {
                throw new InvalidOperationException();
            }

            return(function);
        }
Esempio n. 3
0
 /// <summary>
 /// Example of a function accepting a delegate (function pointer) as an argument.
 /// </summary>
 private bool CompareDelegate(int x, int y, CompareFunction pred)
 {
     return(pred.Invoke(x, y));
 }