TesorFlowSharp是对TesorFlowC语言版API的封装,绑定为.NETAPI,也是TesorFlow的C#语言表述,以此来方便C#和F#开发人员使用 TesorFlow。
目前它与TesoFlow接口的绑定工作已经进入尾声,作者正在对API做一些优化。
使用TesorFlowSharp安装最简单的入门方法是使用TesorFlowSharp的NuGet包,它包含了.NETAPI和64位 Liux、Mac和Widows的原生库。
uget istall TesorFlowSharp或者你也可以在VisualStudio中的NuGet包UI中选择它。
在VS中,要先确保你的环境是.NET4.6.1或者更高版本,因为这个软件包使用了一些新的.NET特性。
当然,你也可以直接点击这里下载。
使用TesorFlowSharp最好的学习方式是阅读SampleTest和Examples目录下的stad-aloe这两个demo,它们使用了大量TesorFlowSharp的API。
这种API绑定在设计上更接近使用显式TesorFlow图形和会话的Java和Go绑定。
通常会先创建一个图形(TFGraph)并在那里设置操作,然后从中创建会话(TFSessio),接着使用会话运行器设置输入和输出并执行。
例如:
usig(var graph = ew TFGraph ()){ graph.Import (File.ReadAllBytes ("MySavedModel")); var sessio = ew TFSessio (graph); var ruer = sessio.GetRuer (); ruer.AddIput (graph ["iput"] [0], tesor); ruer.Fetch (graph ["output"] [0]); var output = ruer.Ru (); // Fetch the results from output: TFTesor result = output [0];}在不需要独立设置图形的情况下,可以在会话中创建一个。以下示例显示如何滥用TesorFlow来计算两个数字的相加:
usig (var sessio = ew TFSessio()){ var graph = sessio.Graph; var a = graph.Cost(2); var b = graph.Cost(3); Cosole.WriteLie("a=2 b=3"); // Add two costats var addigResults = sessio.GetRuer().Ru(graph.Add(a, b)); var addigResultValue = addigResults.GetValue(); Cosole.WriteLie("a+b={0}", addigResultValue); // Multiply two costats var multiplyResults = sessio.GetRuer().Ru(graph.Mul(a, b)); var multiplyResultValue = multiplyResults.GetValue(); Cosole.WriteLie("a*b={0}", multiplyResultValue);}下边是使用F#的同一个例子:
#r @"packages\TesorFlowSharp.1.4.0\lib\et461\TesorFlowSharp.dll"ope Systemope System.IOope TesorFlow// set the path to fid the ative DLLEviromet.SetEvirometVariable("Path", Eviromet.GetEvirometVariable("Path") + ";" + __SOURCE_DIRECTORY__ + @"/packages/TesorFlowSharp.1.2.2/ative")module AddTwoNumbers = let sessio = ew TFSessio() let graph = sessio.Graph let a = graph.Cost(ew TFTesor(2)) let b = graph.Cost(ew TFTesor(3)) Cosole.WriteLie("a=2 b=3") // Add two costats let addigResults = sessio.GetRuer().Ru(graph.Add(a, b)) let addigResultValue = addigResults.GetValue() Cosole.WriteLie("a+b={0}", addigResultValue) // Multiply two costats let multiplyResults = sessio.GetRuer().Ru(graph.Mul(a, b)) let multiplyResultValue = multiplyResults.GetValue() Cosole.WriteLie("a*b={0}", multiplyResultValue)推进TesorFlowSharp如果你想推进TesorFlowSharp的发展,可以阅读 CONTRIBUTING.md 。
评论