示例#1
0
                public override TDomain Assert(APC pc, EdgeTag tag, TVar condition, TDomain data)
                {
                    var boxed = ToBoxedExpression(pc, condition);

                    bool result;

                    if (boxed.IsTrivialCondition(out result))
                    {
                        return(result ? data : data.Bottom);
                    }

                    data = data.AssumeTrue(boxed);

                    var type =
                        ContextProvider.ValueContext.GetType(
                            ContextProvider.MethodContext.CFG.Post(pc), condition);

                    if (type.IsNormal() &&
                        MetaDataProvider.Equal(type.Value, MetaDataProvider.System_Boolean))
                    {
                        var guard =
                            BoxedExpression.Binary(BinaryOperator.Ceq, boxed,
                                                   BoxedExpression.Const(1,
                                                                         MetaDataProvider.
                                                                         System_Int32));

                        data = data.AssumeTrue(guard);
                    }

                    return(data);
                }
示例#2
0
        public static DataSet BuildSet(IAllocator allocator, DigitImage[] images)
        {
            var inputs  = new Tensor(allocator, DType.Float32, images.Length, MnistParser.ImageSize, MnistParser.ImageSize);
            var outputs = new Tensor(allocator, DType.Float32, images.Length, MnistParser.LabelCount);

            var cpuAllocator = new TensorSharp.Cpu.CpuAllocator();

            for (int i = 0; i < images.Length; ++i)
            {
                var target = inputs.TVar().Select(0, i);

                TVar.FromArray(images[i].pixels, cpuAllocator)
                .AsType(DType.Float32)
                .ToDevice(allocator)
                .Evaluate(target);

                target.Div(255)
                .Evaluate(target);
            }


            Ops.FillOneHot(outputs, MnistParser.LabelCount, images.Select(x => (int)x.label).ToArray());
            var targetValues = Tensor.FromArray(allocator, images.Select(x => (float)x.label).ToArray());

            return(new DataSet()
            {
                inputs = inputs, targets = outputs, targetValues = targetValues
            });
        }
示例#3
0
 protected BoxedExpression ToBoxedExpression(APC pc, TVar condition)
 {
     return
         (BoxedExpression.For(
              ContextProvider.ExpressionContext.Refine(pc, condition),
              ExpressionDecoder.ExternalDecoder));
 }
示例#4
0
        public override void Forward(Variable x)
        {
            Input = x;

            var p = 1 - Rate;

            noise = TVar.RandomBernoulli(new SeedSource(), p, Global.Device, x.Data.ElementType, x.Data.Shape)
                    .Div(p)
                    .Evaluate();

            Output = Output.TVar().CMul(noise).Evaluate();
        }
        public static void SetSNOPowerUseDelay(SNOPower power, double delay)
        {
            string key = "SpellDelay." + power.ToString();
            TVar   v   = V.Data[key];

            bool hasDefaultValue = v.Value == v.DefaultValue;

            if (hasDefaultValue)
            {
                // Create a new TVar (changes the default value)
                V.Set(new TVar(v.Name, delay, v.Description));
            }
        }
示例#6
0
        public static TVar L2Normalize(this TVar x, int axis = -1)
        {
            TVar y = null;

            if (axis == -1)
            {
                y = x.Pow(2).SumAll().MaxAll();
            }
            else
            {
                y = x.Pow(2).Sum(axis).Max(axis);
            }

            return(x.CDiv(y.Sqrt()));
        }
示例#7
0
        private Tensor ApplyRegularizer(TVar loss)
        {
            foreach (var l in Layers)
            {
                foreach (var p in l.Params)
                {
                    if (p.Value.HaveRegularizer)
                    {
                        loss += p.Value.ApplyRegularizer();
                    }
                }
            }

            return(loss.Evaluate());
        }
示例#8
0
            void Add(TVar var)
            {
                int cnt;

                if (!occurences.TryGetValue(var, out cnt))
                {
                    cnt = 0;
                }

                occurences[var] = cnt + 1;

                if (cnt == 1)                 // if already was occurence
                {
                    duplicated = duplicated.Cons(var);
                }
            }
示例#9
0
 public void AddVarEvent1(object sender, TVar Var)
 {
     if (this.fastColoredTextBox1.InvokeRequired)
     {
         try
         {
             InsTextCallback d = new InsTextCallback(InsText);
             this.Invoke(d, new object[] { Var.ToStr() + ";\n" });
         }
         catch (System.ObjectDisposedException) { }
     }
     else
     {
         AppendText(Var.FName);
     }
 }
示例#10
0
                                public bool TryEvaluateToConstant (APC pc, TVar dest, BinaryOperator op,
                                                                   BoxedExpression left, BoxedExpression right,
                                                                   out long value)
                                {
                                        var type =
                                                context_provider.ValueContext.GetType (
                                                        context_provider.MethodContext.CFG.Post (pc), dest);
                                        long l;
                                        long r;

                                        if (type.IsNormal () && TryEvaluateToConstant (pc, left, out l) &&
                                            TryEvaluateToConstant (pc, right, out r))
                                                return TryEvaluate (type.Value, op, l, r, out value);

                                        return false.Without (out value);
                                }
示例#11
0
        public static TVar Softmax(this TVar x)
        {
            long[]       shape = x.Evaluate().Shape;
            List <float> data  = new List <float>();

            for (long i = 0; i < shape[0]; i++)
            {
                var s_x = x.Select(0, i);
                var exp = s_x.Exp();
                var sum = exp.SumAll();
                var s_t = (exp / sum.ToScalar()).View(1, shape[1]).Evaluate();
                data.AddRange(s_t.ToArray().Cast <float>());
            }

            return(TVar.FromArray(data.ToArray(), Global.Device).View(shape));
        }
示例#12
0
文件: WIDE.cs 项目: Rex-Hays/GNIDA
 public void AddVarEvent1(object sender, TVar Var)
 {
     if (this.fastColoredTextBox1.InvokeRequired)
     {
         try
         {
             InsTextCallback d = new InsTextCallback(InsText);
             this.Invoke(d, new object[] { Var.ToStr() + ";\n" });
         }
         catch (System.ObjectDisposedException) { }
     }
     else
     {
         AppendText(Var.FName);
     }
 }
示例#13
0
        public Tensor UpdateGradInput(Tensor input, Tensor target)
        {
            var norm = -1.0f / input.Sizes[0];

            TVar.Fill(0, allocator, DType.Float32, gradInput.Sizes)
            .Evaluate(gradInput);

            var indices = target.TVar().View(target.Sizes[0], 1);

            gradInput.TVar()
            .ScatterFill(norm, 1, indices)
            .Evaluate(gradInput);


            return(gradInput);
        }
示例#14
0
        public override void Forward(Variable x)
        {
            Input = x;

            Variable beta  = BuildVar("beta", x.Data.Shape, x.Data.ElementType, BetaInitializer, BetaConstraint, BetaRegularizer);
            Variable gamma = BuildVar("gamma", x.Data.Shape, x.Data.ElementType, GammaInitializer, GammaConstraint, GammaRegularizer);

            mu = BuildVar("mm", x.Data.Shape, x.Data.ElementType, MovingMeanInitializer, null, null, false);
            mv = BuildVar("mv", x.Data.Shape, x.Data.ElementType, MovingVarianceInitializer, null, null, false);

            norm = (x.Data - mu.Data.TVar()).CDiv((mv.Data.TVar() + EPSILON).Sqrt());

            var @out = gamma.Data.TVar().CMul(norm) + beta.Data;

            Output = @out.View(x.Data.Shape).Evaluate();
        }
示例#15
0
        public override Tensor Forward(Tensor input, ModelMode mode)
        {
            Ops.Copy(activation, input);

            if (mode == ModelMode.Train)
            {
                var p = 1 - pRemove;

                TVar.RandomBernoulli(seedSource, p, allocator, elementType, noise.Sizes)
                .Div(p)
                .Evaluate(noise);

                activation.TVar()
                .CMul(noise)
                .Evaluate(activation);
            }

            return(activation);
        }
示例#16
0
        public static void SetSNOPowerUseDelay(SNOPower power, double delay)
        {
            string key = "SpellDelay." + power.ToString();

            if (!V.Data.ContainsKey(key))
            {
                Logger.LogDebug("Failed to Set TVar {0} - key doesnt exist");
                return;
            }


            TVar v = V.Data[key];

            bool hasDefaultValue = v.Value == v.DefaultValue;

            if (hasDefaultValue)
            {
                // Create a new TVar (changes the default value)
                V.Set(new TVar(v.Name, delay, v.Description));
            }
        }
示例#17
0
        public override string ToString(MyDictionary ProcList, VarDictionary VarDict, Dictionary <ulong, TFunc> NewSubs)
        {
            string s = "$" + ins.ToAsmString();

            if (bytes[0] == 0xE8)
            {
                if (ins.Operand1.ValueType == TUP.AsmResolver.ASM.OperandType.Normal)
                {
                    s = AddProc(((Offset)ins.Operand1.Value).FileOffset + Addr, ProcList, NewSubs);
                }
            }
            if (bytes[0] == 0xFF)
            {
                if (bytes[1] == 0x15)
                {
                    if (ins.Operand1.ValueType == TUP.AsmResolver.ASM.OperandType.DwordPointer)
                    {
                        s = AddProc(((Offset)ins.Operand1.Value).Va, ProcList, NewSubs);
                    }
                }
            }

            if (bytes[0] == 0xA3)//mov somevar, EAX
            {
                TVar Var1 = new TVar(((Offset)ins.Operand1.Value).Va, "", 4);
                if (!VarDict.ContainsKey(((Offset)ins.Operand1.Value).Va))
                {
                    VarDict.AddVar(Var1);
                }
                ;
                s = VarDict[((Offset)ins.Operand1.Value).Va].FName + " = EAX;";
            }
            if ((bytes[0] == 0xC2) | //retn
                (bytes[0] == 0xC3))  //ret
            {
                s = "$ret";
            }
            return(s);
        }
 public override int GetHashCode()
 {
     return(TVar.GetHashCode() ^ KVar.GetHashCode());
 }
 public bool Equals(GenericValuePair <TValue, KValue> other)
 {
     return(TVar.Equals(other.TVar) && KVar.Equals(other.KVar));
 }
        public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
        {
            try
            {
                BindingGroup bindingGroup       = (BindingGroup)value;
                KeyValuePair <string, TVar> kvp = (KeyValuePair <string, TVar>)bindingGroup.Items[0];

                TVar tvar = kvp.Value;

                if (tvar.DefaultValue.GetType() == typeof(int))
                {
                    try
                    {
                        int val = Int32.Parse(tvar.Value.ToString());
                    }
                    catch
                    {
                        return(new ValidationResult(false, "Value is not an int"));
                    }
                }

                if (tvar.DefaultValue.GetType() == typeof(bool))
                {
                    try
                    {
                        bool val = Boolean.Parse(tvar.Value.ToString());
                    }
                    catch
                    {
                        return(new ValidationResult(false, "Value is not a bool"));
                    }
                }

                if (tvar.DefaultValue.GetType() == typeof(float))
                {
                    try
                    {
                        float val = Single.Parse(tvar.Value.ToString());
                    }
                    catch
                    {
                        return(new ValidationResult(false, "Value is not a float"));
                    }
                }

                if (tvar.DefaultValue.GetType() == typeof(double))
                {
                    try
                    {
                        double val = Double.Parse(tvar.Value.ToString());
                    }
                    catch
                    {
                        return(new ValidationResult(false, "Value is not a double"));
                    }
                }


                return(ValidationResult.ValidResult);
            }
            catch (Exception ex)
            {
                Logger.LogNormal("Exception in TVar Validator {0}", ex.ToString());
                return(new ValidationResult(false, "Unknown error"));
            }
        }
示例#21
0
 public override string ToString(MyDictionary ProcList, VarDictionary VarDict, Dictionary<ulong, TFunc> NewSubs)
 {
     if (!(bytes==null))
     if (bytes.Count() > 0)
     switch (bytes[0])
     {
     case 0x74: return "$jz Loc_" + OpToString(0).Remove(0, 2);
     case 0x75: return "$jnz Loc_" + OpToString(0).Remove(0, 2);
     case 0xE8://call;
     return AddProc(ops[0].value.imm.imm64, ProcList, NewSubs);
     case 0xE9://jmp;
     case 0xEB://jmp;
     return "$jmp Loc_" + OpToString(0).Remove(0, 2);
     case 0xA3://mov somevar, EAX
     {
         TVar Var1 = new TVar((ulong)disp.value.d64, "", 4);
         if (!VarDict.ContainsKey((ulong)disp.value.d64))
         {
             VarDict.AddVar(Var1);
         };
         return VarDict[(ulong)disp.value.d64].FName + " = " + OpToString(1) + ";";
     }
     case 0xFF:
     {
         if (this.bytes[1] == 0x15)
             return AddProc(disp.value.d64, ProcList, NewSubs);
     } break;
     case 0x0F:
     {
         if (this.bytes[1] == 0x86)
             return "$jbe Loc_" + OpToString(0).Remove(0, 2);
     }break;
     }
     string ret = "$"+mnemonic;
     if (ops[0].size > 0) ret += " " + OpToString(0);
     if (ops[1].size > 0) ret += ", " + OpToString(1);
     if (ops[2].size > 0) ret += ", " + OpToString(2);
     return ret;
 }
示例#22
0
文件: GNIDA.cs 项目: Rex-Hays/GNIDA2
 public void RaiseVarFuncEvent(object sender, TVar Var)
 {
     if (OnVarEvent != null) OnVarEvent(sender, Var);
 }
示例#23
0
 public WriteTVar(TVar <T> tvar, T value)
 {
     this.TVar  = tvar;
     this.Value = value;
 }
示例#24
0
 public ReadTVar(TVar <T> tvar)
 {
     this.TVar = tvar;
 }
示例#25
0
 public static STML <T> ReadTVar <T>(TVar <T> tvar) =>
 new ReadTVar <T>(tvar).ToSTML <ReadTVar <T>, T>();
示例#26
0
 public static TVar Softplus(this TVar x)
 {
     return((x.Exp() + 1).Log());
 }
示例#27
0
 public static STML <Unit> WriteTVar <T>(TVar <T> tvar, T value) =>
 new WriteTVar <T>(tvar, value).ToSTML <WriteTVar <T>, Unit>();
示例#28
0
        public override string ToString(MyDictionary ProcList, VarDictionary VarDict, Dictionary<ulong, TFunc> NewSubs)
        {
            string s = "$"+ins.ToAsmString();
            if (bytes[0] == 0xE8)
                if (ins.Operand1.ValueType == TUP.AsmResolver.ASM.OperandType.Normal)
                    s = AddProc(((Offset)ins.Operand1.Value).FileOffset + Addr, ProcList, NewSubs);
            if (bytes[0] == 0xFF)
                if (bytes[1] == 0x15)
                    if (ins.Operand1.ValueType == TUP.AsmResolver.ASM.OperandType.DwordPointer)
                        s = AddProc(((Offset)ins.Operand1.Value).Va, ProcList, NewSubs);

            if (bytes[0] == 0xA3)//mov somevar, EAX
            {
                TVar Var1 = new TVar(((Offset)ins.Operand1.Value).Va, "", 4);
                if (!VarDict.ContainsKey(((Offset)ins.Operand1.Value).Va))
                {
                    VarDict.AddVar(Var1);
                };
                s = VarDict[((Offset)ins.Operand1.Value).Va].FName + " = EAX;";
            }
            if ((bytes[0] == 0xC2) |//retn
                (bytes[0] == 0xC3))//ret
                s = "$ret";
                return s;
        }
示例#29
0
                public override TDomain Assume(APC pc, EdgeTag tag, TVar condition, TDomain data)
                {
                    var boxed = ToBoxedExpression(pc, condition);

                    if (tag != EdgeTag.False)
                    {
                        bool value;
                        if (boxed.IsTrivialCondition(out value))
                        {
                            return(!value ? data.Bottom : data);
                        }
                    }

                    List <int> thresholds;

                    if (ThresholdDB.TryGetAThreshold(boxed, expression_decoder, out thresholds))
                    {
                        ThresholdDB.Add(thresholds);
                    }

                    TDomain result;

                    switch (tag)
                    {
                    case EdgeTag.True:
                    case EdgeTag.Requires:
                    case EdgeTag.Assume:
                    case EdgeTag.Invariant:
                        result = data.AssumeTrue(boxed);
                        break;

                    case EdgeTag.False:
                        result = data.AssumeFalse(boxed);
                        break;

                    default:
                        result = data;
                        break;
                    }

                    if (tag != EdgeTag.False)
                    {
                        var abstractType =
                            ContextProvider.ValueContext.GetType(
                                ContextProvider.MethodContext.CFG.Post(pc), condition);
                        if (abstractType.IsNormal() &&
                            MetaDataProvider.Equal(abstractType.Value,
                                                   MetaDataProvider.System_Boolean))
                        {
                            var guard =
                                BoxedExpression.Binary(BinaryOperator.Ceq, boxed,
                                                       BoxedExpression.Const(1,
                                                                             MetaDataProvider
                                                                             .
                                                                             System_Int32));

                            result = result.AssumeTrue(guard);
                        }
                    }

                    return(result);
                }
示例#30
0
        /// <summary>
        /// Sets a Variable (stores it in the dictionary)
        /// </summary>
        /// <param name="var"></param>
        public static void Set(TVar var)
        {
            try
            {
                lock (sync)
                {
                    if (ContainsKey(var.Name))
                        Data[var.Name] = var;
                    else
                        Data.Add(var.Name, var);
                }
            }
            catch (Exception ex)
            {
                Logger.Log("Exception Setting TVar: {0} {1}", var, ex);
            }

        }
示例#31
0
 public FlatDomain <bool> ValidateExplicitAssertion(APC pc, TVar value)
 {
     return(FlatDomain <bool> .TopValue);
 }