private static void try_classifier(string datacfg, string cfgfile, string weightfile, string filename, int layerNum) { Network net = Parser.parse_network_cfg(cfgfile); if (string.IsNullOrEmpty(weightfile)) { Parser.load_weights(net, weightfile); } Network.set_batch_network(net, 1); Utils.Rand = new Random(2222222); var options = OptionList.read_data_cfg(datacfg); string nameList = OptionList.option_find_str(options, "names", ""); if (string.IsNullOrEmpty(nameList)) { nameList = OptionList.option_find_str(options, "labels", "Data.Data/labels.list"); } int top = OptionList.option_find_int(options, "top", 1); int i = 0; string[] names = Data.Data.get_labels(nameList); var sw = new Stopwatch(); int[] indexes = new int[top]; string input = ""; while (true) { if (!string.IsNullOrEmpty(filename)) { input = filename; } else { Console.Write($"Enter Image Path: "); input = Console.ReadLine(); if (string.IsNullOrEmpty(input)) { return; } input = input.TrimEnd(); } Image orig = LoadArgs.load_image_color(input, 0, 0); Image r = LoadArgs.resize_min(orig, 256); Image im = LoadArgs.crop_image(r, (r.W - 224 - 1) / 2 + 1, (r.H - 224 - 1) / 2 + 1, 224, 224); float[] mean = { 0.48263312050943f, 0.45230225481413f, 0.40099074308742f }; float[] std = { 0.22590347483426f, 0.22120921437787f, 0.22103996251583f }; float[] var = new float[3]; var[0] = std[0] * std[0]; var[1] = std[1] * std[1]; var[2] = std[2] * std[2]; Blas.Normalize_cpu(im.Data, mean, var, 1, 3, im.W * im.H); float[] x = im.Data; sw.Reset(); sw.Start(); float[] predictions = Network.network_predict(net, x); Layer l = net.Layers[layerNum]; for (i = 0; i < l.C; ++i) { if (l.RollingMean.Length > i) { Console.Write($"%f %f %f\n", l.RollingMean[i], l.RollingVariance[i], l.Scales[i]); } } Array.Copy(l.OutputGpu, l.Output, l.Outputs); for (i = 0; i < l.Outputs; ++i) { Console.Write($"%f\n", l.Output[i]); } Network.top_predictions(net, top, indexes); sw.Stop(); Console.Write($"%s: Predicted ini %f seconds.\n", input, sw.Elapsed.Seconds); for (i = 0; i < top; ++i) { int index = indexes[i]; Console.Write($"%s: %f\n", names[index], predictions[index]); } if (!string.IsNullOrEmpty(filename)) { break; } } }