From a38bd5d0b220c1d8c76f172ad2125a9243a72861 Mon Sep 17 00:00:00 2001 From: Oceania2018 Date: Mon, 6 May 2019 00:08:34 -0500 Subject: [PATCH] input multiple pictures for Image Recognition Inception. --- data/shasta-daisy.jpg | Bin 0 -> 69803 bytes docs/source/LogisticRegression.md | 26 +----- .../logistic-regression/1557035393445.png | Bin 0 -> 2335 bytes docs/source/{ => _static}/sigmoid.png | Bin .../TensorFlowNET.Core.csproj | 8 +- ...nition.cs => ImageRecognitionInception.cs} | 77 ++++++++++-------- test/TensorFlowNET.Examples/Program.cs | 9 +- .../Text/NER/BiLstmCrfNer.cs | 49 ++++++++++- 8 files changed, 100 insertions(+), 69 deletions(-) create mode 100644 data/shasta-daisy.jpg create mode 100644 docs/source/_static/logistic-regression/1557035393445.png rename docs/source/{ => _static}/sigmoid.png (100%) rename test/TensorFlowNET.Examples/{ImageRecognition.cs => ImageRecognitionInception.cs} (57%) diff --git a/data/shasta-daisy.jpg b/data/shasta-daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9a0a46eb08bdb81b07ef9a35e6ee48e2c626807d GIT binary patch literal 69803 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

CdX#J?*E4+z;u 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%0DYSn&HsgHY3TttD+`iCq=d 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 J-!SIT|Jj9sVx#~7 literal 0 HcmV?d00001 diff --git a/docs/source/LogisticRegression.md b/docs/source/LogisticRegression.md index 8c524ea9..3820eca5 100644 --- a/docs/source/LogisticRegression.md +++ b/docs/source/LogisticRegression.md @@ -6,31 +6,11 @@ Logistic regression is a statistical analysis method used to predict a data valu 逻辑回归是一种统计分析方法,用于根据已有得观察数据来预测未知数据。逻辑回归模型通过分析一个或多个现有自变量之间的关系来预测从属数据变量。 -The dependent variable of logistics regression can be two-category or multi-category, but the two-category is more common and easier to explain. So the most common use in practice is the logistics of the two classifications. +The dependent variable of logistics regression can be two-category or multi-category, but the two-category is more common and easier to explain. So the most common use in practice is the logistics of the two classifications. An example used by TensorFlow.NET is a hand-written digit recognition, which is a multi-category. -逻辑回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。 +逻辑回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。 TensorFlow.NET用的例子是一个手写数字识别,它是一个多分类的问题。 - -Logistics regression corresponds to a hidden status p through the function trumpetp = S(ax+b), then determine the value of the dependent -variable according to the size of p and 1-p.The function S here is the Sigmoid function: - S(t)=1/(1+e^(-t) -By changing t to ax+b, you can get the parameter form of the logistic regression model: - P(x;a,b) = 1 / (1 + e^(-ax+b)) - -logistic回归通过函数S将ax+b对应到一个隐状态p,p = S(ax+b),然后根据p与1-p的大小决定因变量的值。这里的函数S就是Sigmoid函数: - S(t)=1/(1+e^(-t) - -将t换成ax+b,可以得到逻辑回归模型的参数形式: - P(x;a,b) = 1 / (1 + e^(-ax+b)) - -![image](https://github.com/SciEvan/TensorFlow.NET/tree/master/docs/source/sigmoid.png) - -sigmoid函数的图像 - -By the function of the function S, we can limit the output value to the interval [0, 1], -p(x) can then be used to represent the probability p(y=1|x), the probability that y is divided into 1 group when an x occurs. - -通过函数S的作用,我们可以将输出的值限制在区间[0, 1]上,p(x)则可以用来表示概率p(y=1|x),即当一个x发生时,y被分到1那一组的概率 +Softmax regression allows us to handle ![1557035393445](_static\logistic-regression\1557035393445.png) where K is the number of classes. The full example is [here](https://github.com/SciSharp/TensorFlow.NET/blob/master/test/TensorFlowNET.Examples/LogisticRegression.cs). diff --git a/docs/source/_static/logistic-regression/1557035393445.png b/docs/source/_static/logistic-regression/1557035393445.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ca67a8bd61cdf1b21dacfc57ffcedfb885c522 GIT binary patch literal 2335 zcmV+)3E=jLP)eVIm4*&YKBc<5gKUYEgMY-Sug`LG(8q(Gg&wz zm|e)kR2QLT@gqW8!zU^Lio;&x)9fEK#oN|a- zK7YaU{NCU5avT;M4sH9-}YIPzJDweOc= znGjQI-={SH^%tRNksw!N3p@M83abrhD{ z$z86~G*3ZLDO~o2(7#?zW)jv$lNnB3Mhe@=O`rYfk46Nky`BSoDu$vunu`r+-kSg2 z zzK+6-#ABtP{0-tC0KI5SY~2Y&;&HHTn#)Vs!xdY>+Zh0np zR7P&AkUcL2P=gV=cKj6AfQdJLbeD_&y32D{6O{n|+W;b#>`8S+4br)PAHJ2_Y5LHD zIE!?X5=}Lk#T&L!qg-I$F#+=jZzU{?ccb?n$!Fx-Al{zSTn_lTsXW}5RlJ+34YLi< zWt4pUH6;L7_LH;q-?Q}h6f)>12#{vRY#eWngghMlxSPfAIceN5`!{L!L6tVuiB1q1 zK6!@F5)0ekScDn|;c@j-RL1-1LEO?(^4_;oQCxwbtq~WPhTyGpc*>4kCu^q{;;M^Ax zvd(Hi?!U_T_kc)V%|V)*8marWjm!z71f{F++B(chBr4wp9~t=t7*i2Y5e4tzBlyr^ z*qo0!1umZ{f`c(V#XWjI`54Js!}hoi4fS*rO45z^lb?~l9F(38x^5&`q9CEBGGX7n z3!NCjd#o1~0ow-a*v#+;0E}c!5PIUqBCN;Vc&-&vmOagk!alnDUc~kr8#Bk$5b_X& zuJ57ttLZJL7wR%+_PgjBP*Bs&l-5;~m$Fp<>=2Z$#+G(;%dl;$!M;j>kPZEL5AsMa zr?1(ke|BS}8L{tf!t%F$H1Dm(BZ}C{n<%x6n@kO=G#!GdgK#ew`T@bpx;62>+kX7t z0){M16NPuWm9nx6>^kfwx2X(s!px%LYwsXrEvL+wsDCmqAuIvQJ55ymI2n5_^yGcm zgzc6W_n|h9xLn++*-44ku0O0z(1v=tY<>EBA1F9JBCPz6YU<7@FTJq1~-5~mu$Qb@_`8ih@?P*Rj^ zK*cb;olizzCtbH5;iBnyMIU<^hHo-F8$S_+U@(N5SW-Y#A=K~1e_P8SNt=j_|Dr@_ z8XXnfsvJ6{+Vqect6=i^Wg(D{IN5!kiO>Tce`DI6B5QUM1SLRnyi# zb_+bXwpCL3*V##q7ZRUQkDw}}kS;!030F=vQ2Ti(zH4omddXa)gy{7g=Uo5bl)y@U zo5n{=WeYy6RJB%No%sSyB5E%!zxA`}PzA}z+c_f|A^3%pjwKH2HqZTL<*Hpg5$%8Bo7Y)WR0DTORb(_WHE7*v*@Zzpd>gu!F`sI9H1E1ZwRRX4uA@yuf3 zt@Q%ne)6rg)%DE&-Yqakk0l1wyk!aME!`|?xnM52-1wawO%_jYG|tG zn1$oSkIsbS#2J=N6up~|b(-VEKfIt?V9r_iG3f#+=l=<4NyfiXqN)G@002ovPDHLk FV1m$1c8&l5 literal 0 HcmV?d00001 diff --git a/docs/source/sigmoid.png b/docs/source/_static/sigmoid.png similarity index 100% rename from docs/source/sigmoid.png rename to docs/source/_static/sigmoid.png diff --git a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj index 204b2d01..3aa0192b 100644 --- a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj +++ b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj @@ -5,7 +5,7 @@ TensorFlow.NET Tensorflow 1.14.0 - 0.7.0 + 0.8.0 Haiping Chen SciSharp STACK false @@ -17,15 +17,15 @@ TensorFlow, NumSharp, SciSharp, MachineLearning, TensorFlow.NET, C# Google's TensorFlow full binding in .NET Standard. Docs: https://tensorflownet.readthedocs.io - 0.7.0.0 - Changes since v0.6: + 0.8.0.0 + Changes since v0.7: Add XOR example. Add KMeans example. Add Object Detection example. Add Word2Vec example. 7.2 - 0.7.0.0 + 0.8.0.0 diff --git a/test/TensorFlowNET.Examples/ImageRecognition.cs b/test/TensorFlowNET.Examples/ImageRecognitionInception.cs similarity index 57% rename from test/TensorFlowNET.Examples/ImageRecognition.cs rename to test/TensorFlowNET.Examples/ImageRecognitionInception.cs index 6ba8d898..05fe1928 100644 --- a/test/TensorFlowNET.Examples/ImageRecognition.cs +++ b/test/TensorFlowNET.Examples/ImageRecognitionInception.cs @@ -1,27 +1,33 @@ using NumSharp; using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; -using System.IO.Compression; +using Console = Colorful.Console; using System.Linq; using System.Net; using System.Text; using Tensorflow; +using System.Drawing; namespace TensorFlowNET.Examples { - public class ImageRecognition : Python, IExample + ///

+ /// Inception v3 is a widely-used image recognition model + /// that has been shown to attain greater than 78.1% accuracy on the ImageNet dataset. + /// The model is the culmination of many ideas developed by multiple researchers over the years. + /// + public class ImageRecognitionInception : Python, IExample { public int Priority => 7; public bool Enabled { get; set; } = true; - public string Name => "Image Recognition"; + public string Name => "Image Recognition Inception"; public bool ImportGraph { get; set; } = false; - string dir = "ImageRecognition"; + string dir = "ImageRecognitionInception"; string pbFile = "tensorflow_inception_graph.pb"; string labelFile = "imagenet_comp_graph_label_strings.txt"; - string picFile = "grace_hopper.jpg"; public bool Run() { @@ -29,41 +35,39 @@ namespace TensorFlowNET.Examples var labels = File.ReadAllLines(Path.Join(dir, labelFile)); var files = Directory.GetFiles(Path.Join(dir, "img")); - foreach (var file in files) - { - var tensor = ReadTensorFromImageFile(file); - var graph = new Graph().as_default(); - //import GraphDef from pb file - graph.Import(Path.Join(dir, pbFile)); + var graph = new Graph().as_default(); + //import GraphDef from pb file + graph.Import(Path.Join(dir, pbFile)); + + var input_name = "input"; + var output_name = "output"; - var input_name = "input"; - var output_name = "output"; + var input_operation = graph.OperationByName(input_name); + var output_operation = graph.OperationByName(output_name); - var input_operation = graph.OperationByName(input_name); - var output_operation = graph.OperationByName(output_name); + var result_labels = new List(); + var sw = new Stopwatch(); - var idx = 0; - float propability = 0; - with(tf.Session(graph), sess => + with(tf.Session(graph), sess => + { + foreach (var file in files) { + sw.Restart(); + + // load image file + var tensor = ReadTensorFromImageFile(file); var results = sess.run(output_operation.outputs[0], new FeedItem(input_operation.outputs[0], tensor)); - var probabilities = results.Data(); - for (int i = 0; i < probabilities.Length; i++) - { - if (probabilities[i] > propability) - { - idx = i; - propability = probabilities[i]; - } - } - }); - - Console.WriteLine($"{picFile}: {labels[idx]} {propability}"); - return labels[idx].Equals("military uniform"); - } - - return false; + results = np.squeeze(results); + int idx = np.argmax(results); + + Console.WriteLine($"{file.Split(Path.DirectorySeparatorChar).Last()}: {labels[idx]} {results[idx]} in {sw.ElapsedMilliseconds}ms", Color.Tan); + + result_labels.Add(labels[idx]); + } + }); + + return result_labels.Contains("military uniform"); } private NDArray ReadTensorFromImageFile(string file_name, @@ -72,7 +76,7 @@ namespace TensorFlowNET.Examples int input_mean = 117, int input_std = 1) { - return with(tf.Graph().as_default(), graph => + return with(tf.Graph(), graph => { var file_reader = tf.read_file(file_name, "file_reader"); var decodeJpeg = tf.image.decode_jpeg(file_reader, channels: 3, name: "DecodeJpeg"); @@ -102,6 +106,9 @@ namespace TensorFlowNET.Examples Directory.CreateDirectory(Path.Join(dir, "img")); url = $"https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/examples/label_image/data/grace_hopper.jpg"; Utility.Web.Download(url, Path.Join(dir, "img"), "grace_hopper.jpg"); + + url = $"https://raw.githubusercontent.com/SciSharp/TensorFlow.NET/master/data/shasta-daisy.jpg"; + Utility.Web.Download(url, Path.Join(dir, "img"), "shasta-daisy.jpg"); } } } diff --git a/test/TensorFlowNET.Examples/Program.cs b/test/TensorFlowNET.Examples/Program.cs index 23c50b76..01928b88 100644 --- a/test/TensorFlowNET.Examples/Program.cs +++ b/test/TensorFlowNET.Examples/Program.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.Drawing; using System.Linq; using System.Reflection; +using Tensorflow; using Console = Colorful.Console; namespace TensorFlowNET.Examples @@ -12,16 +13,18 @@ namespace TensorFlowNET.Examples { static void Main(string[] args) { - var assembly = Assembly.GetEntryAssembly(); var errors = new List(); var success = new List(); var disabled = new List(); - var examples = assembly.GetTypes() + var examples = Assembly.GetEntryAssembly().GetTypes() .Where(x => x.GetInterfaces().Contains(typeof(IExample))) .Select(x => (IExample)Activator.CreateInstance(x)) .OrderBy(x => x.Priority) .ToArray(); + Console.WriteLine($"TensorFlow v{tf.VERSION}", Color.Yellow); + Console.WriteLine($"TensorFlow.NET v{Assembly.GetAssembly(typeof(TF_DataType)).GetName().Version}", Color.Yellow); + var sw = new Stopwatch(); foreach (IExample example in examples) { @@ -30,7 +33,6 @@ namespace TensorFlowNET.Examples Console.WriteLine($"{DateTime.UtcNow} Starting {example.Name}", Color.White); - try { if (example.Enabled || args.Length > 0) // if a specific example was specified run it, regardless of enabled value @@ -55,7 +57,6 @@ namespace TensorFlowNET.Examples Console.WriteLine(ex); } - Console.WriteLine($"{DateTime.UtcNow} Completed {example.Name}", Color.White); } diff --git a/test/TensorFlowNET.Examples/Text/NER/BiLstmCrfNer.cs b/test/TensorFlowNET.Examples/Text/NER/BiLstmCrfNer.cs index 43e4aa88..6a7cf55b 100644 --- a/test/TensorFlowNET.Examples/Text/NER/BiLstmCrfNer.cs +++ b/test/TensorFlowNET.Examples/Text/NER/BiLstmCrfNer.cs @@ -1,10 +1,15 @@ using System; using System.Collections.Generic; +using System.IO; using System.Text; using Tensorflow; namespace TensorFlowNET.Examples { + /// + /// Bidirectional LSTM-CRF Models for Sequence Tagging + /// https://github.com/guillaumegenthial/tf_ner/tree/master/models/lstm_crf + /// public class BiLstmCrfNer : Python, IExample { public int Priority => 13; @@ -13,15 +18,53 @@ namespace TensorFlowNET.Examples public bool ImportGraph { get; set; } = false; public string Name => "bi-LSTM + CRF NER"; + HyperParams @params = new HyperParams(); + + public bool Run() + { + PrepareData(); + return true; + } public void PrepareData() { - + if (!Directory.Exists(HyperParams.DATADIR)) + Directory.CreateDirectory(HyperParams.DATADIR); + + if (!Directory.Exists(@params.RESULTDIR)) + Directory.CreateDirectory(@params.RESULTDIR); + + if (!Directory.Exists(@params.MODELDIR)) + Directory.CreateDirectory(@params.MODELDIR); + + if (!Directory.Exists(@params.EVALDIR)) + Directory.CreateDirectory(@params.EVALDIR); } - public bool Run() + private class HyperParams { - return true; + public const string DATADIR = "BiLstmCrfNer"; + public string RESULTDIR = Path.Combine(DATADIR, "results"); + public string MODELDIR; + public string EVALDIR; + + public int dim = 300; + public float dropout = 0.5f; + public int num_oov_buckets = 1; + public int epochs = 25; + public int batch_size = 20; + public int buffer = 15000; + public int lstm_size = 100; + public string words = Path.Combine(DATADIR, "vocab.words.txt"); + public string chars = Path.Combine(DATADIR, "vocab.chars.txt"); + public string tags = Path.Combine(DATADIR, "vocab.tags.txt"); + public string glove = Path.Combine(DATADIR, "glove.npz"); + + public HyperParams() + { + MODELDIR = Path.Combine(RESULTDIR, "model"); + EVALDIR = Path.Combine(MODELDIR, "eval"); + } } } }