示例#1
0
 public void Load(BinaryReader reader)
 {
     dim          = reader.ReadInt32();
     ws           = reader.ReadInt32();
     epoch        = reader.ReadInt32();
     minCount     = reader.ReadInt32();
     neg          = reader.ReadInt32();
     wordNgrams   = reader.ReadInt32();
     loss         = (LossName)reader.ReadInt32();
     model        = (ModelName)reader.ReadInt32();
     bucket       = reader.ReadInt32();
     minn         = reader.ReadInt32();
     maxn         = reader.ReadInt32();
     lrUpdateRate = reader.ReadInt32();
     t            = reader.ReadDouble();
 }
示例#2
0
        protected string LossToString(LossName ln)
        {
            switch (ln)
            {
            case LossName.hs:
                return("hs");

            case LossName.ns:
                return("ns");

            case LossName.softmax:
                return("softmax");

            case LossName.ova:
                return("one-vs-all");

            default:
                return("Unknown loss!");    // should never happen
            }
        }
示例#3
0
        public void ParseArgs(IReadOnlyList <string> args)
        {
            var command = args[0];

            if (command == "supervised")
            {
                model    = ModelName.sup;
                loss     = LossName.softmax;
                minCount = 1;
                minn     = 0;
                maxn     = 0;
                lr       = 0.1;
            }
            else if (command == "cbow")
            {
                model = ModelName.cbow;
            }

            for (int ai = 1; ai < args.Count; ai += 2)
            {
                if (args[ai][0] != '-')
                {
                    Console.Error.WriteLine("Provided argument without a dash! Usage:");
                    PrintHelp();
                    Environment.Exit(-1);
                }
                try
                {
                    if (args[ai] == "-h")
                    {
                        Console.Error.WriteLine("Here is the help! Usage:");
                        PrintHelp();
                        Environment.Exit(-1);
                    }
                    else if (args[ai] == "-input")
                    {
                        input = args[ai + 1];
                    }
                    else if (args[ai] == "-output")
                    {
                        output = args[ai + 1];
                    }
                    else if (args[ai] == "-lr")
                    {
                        lr = float.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-lrUpdateRate")
                    {
                        lrUpdateRate = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-dim")
                    {
                        dim = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-ws")
                    {
                        ws = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-epoch")
                    {
                        epoch = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-minCount")
                    {
                        minCount = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-minCountLabel")
                    {
                        minCountLabel = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-neg")
                    {
                        neg = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-wordNgrams")
                    {
                        wordNgrams = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-loss")
                    {
                        if (args[ai + 1] == "hs")
                        {
                            loss = LossName.hs;
                        }
                        else if (args[ai + 1] == "ns")
                        {
                            loss = LossName.ns;
                        }
                        else if (args[ai + 1] == "softmax")
                        {
                            loss = LossName.softmax;
                        }
                        else if (args[ai + 1] == "one-vs-all" || args[ai + 1] == "ova")
                        {
                            loss = LossName.ova;
                        }
                        else
                        {
                            Console.Error.WriteLine($"Unknown loss: {args[ai + 1]}");
                            PrintHelp();
                            Environment.Exit(-1);
                        }
                    }
                    else if (args[ai] == "-bucket")
                    {
                        bucket = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-minn")
                    {
                        minn = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-maxn")
                    {
                        maxn = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-thread")
                    {
                        thread = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-t")
                    {
                        t = float.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-label")
                    {
                        label = args[ai + 1];
                    }
                    else if (args[ai] == "-verbose")
                    {
                        verbose = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-pretrainedVectors")
                    {
                        pretrainedVectors = args[ai + 1];
                    }
                    else if (args[ai] == "-saveOutput")
                    {
                        saveOutput = true;
                        ai--;
                    }
                    else if (args[ai] == "-qnorm")
                    {
                        qnorm = true;
                        ai--;
                    }
                    else if (args[ai] == "-retrain")
                    {
                        retrain = true;
                        ai--;
                    }
                    else if (args[ai] == "-qout")
                    {
                        qout = true;
                        ai--;
                    }
                    else if (args[ai] == "-cutoff")
                    {
                        cutoff = int.Parse(args[ai + 1]);
                    }
                    else if (args[ai] == "-dsub")
                    {
                        dsub = int.Parse(args[ai + 1]);
                    }
                    else
                    {
                        Console.Error.WriteLine($"Unknown argument: {args[ai]}");
                        PrintHelp();
                        Environment.Exit(-1);
                    }
                }
                catch (IndexOutOfRangeException)
                {
                    Console.Error.WriteLine($"{args[ai]} is missing an argument");
                    PrintHelp();
                    Environment.Exit(-1);
                }
            }

            if (string.IsNullOrEmpty(input) || string.IsNullOrEmpty(output))
            {
                Console.Error.WriteLine("Empty input or output path.");
                PrintHelp();
                Environment.Exit(-1);
            }

            if (wordNgrams <= 1 && maxn == 0)
            {
                bucket = 0;
            }
        }