TensorFlowSharp TensorFlow 的 .NET 绑定开源项目

我要开发同款
匿名用户2018年03月28日
30阅读
开发技术C#
所属分类人工智能、机器学习/深度学习
授权协议MIT

作品详情

TensorFlowSharp是对TensorFlowC语言版API的封装,绑定为.NETAPI,也是TensorFlow的C#语言表述,以此来方便C#和F#开发人员使用 TensorFlow。

目前它与TensoFlow接口的绑定工作已经进入尾声,作者正在对API做一些优化。

使用TensorFlowSharp安装

最简单的入门方法是使用TensorFlowSharp的NuGet包,它包含了.NETAPI和64位 Linux、Mac和Windows的原生库。

nuget install TensorFlowSharp

或者你也可以在VisualStudio中的NuGet包UI中选择它。

在VS中,要先确保你的环境是.NET4.6.1或者更高版本,因为这个软件包使用了一些新的.NET特性。

当然,你也可以直接点击这里下载。

使用TensorFlowSharp

最好的学习方式是阅读SampleTest和Examples目录下的stand-alone这两个demo,它们使用了大量TensorFlowSharp的API。

这种API绑定在设计上更接近使用显式TensorFlow图形和会话的Java和Go绑定。

通常会先创建一个图形(TFGraph)并在那里设置操作,然后从中创建会话(TFSession),接着使用会话运行器设置输入和输出并执行。

例如:

using(var graph = new TFGraph ()){    graph.Import (File.ReadAllBytes ("MySavedModel"));    var session = new TFSession (graph);    var runner = session.GetRunner ();    runner.AddInput (graph ["input"] [0], tensor);    runner.Fetch (graph ["output"] [0]);    var output = runner.Run ();    // Fetch the results from output:    TFTensor result = output [0];}

在不需要独立设置图形的情况下,可以在会话中创建一个。以下示例显示如何滥用TensorFlow来计算两个数字的相加:

using (var session = new TFSession()){    var graph = session.Graph;    var a = graph.Const(2);    var b = graph.Const(3);    Console.WriteLine("a=2 b=3");    // Add two constants    var addingResults = session.GetRunner().Run(graph.Add(a, b));    var addingResultValue = addingResults.GetValue();    Console.WriteLine("a+b={0}", addingResultValue);    // Multiply two constants    var multiplyResults = session.GetRunner().Run(graph.Mul(a, b));    var multiplyResultValue = multiplyResults.GetValue();    Console.WriteLine("a*b={0}", multiplyResultValue);}

下边是使用F#的同一个例子:

#r @"packages\TensorFlowSharp.1.4.0\lib\net461\TensorFlowSharp.dll"open Systemopen System.IOopen TensorFlow// set the path to find the native DLLEnvironment.SetEnvironmentVariable("Path",     Environment.GetEnvironmentVariable("Path") + ";" + __SOURCE_DIRECTORY__ + @"/packages/TensorFlowSharp.1.2.2/native")module AddTwoNumbers =     let session = new TFSession()    let graph = session.Graph    let a = graph.Const(new TFTensor(2))    let b = graph.Const(new TFTensor(3))    Console.WriteLine("a=2 b=3")    // Add two constants    let addingResults = session.GetRunner().Run(graph.Add(a, b))    let addingResultValue = addingResults.GetValue()    Console.WriteLine("a+b={0}", addingResultValue)    // Multiply two constants    let multiplyResults = session.GetRunner().Run(graph.Mul(a, b))    let multiplyResultValue = multiplyResults.GetValue()    Console.WriteLine("a*b={0}", multiplyResultValue)

推进TensorFlowSharp

如果你想推进TensorFlowSharp的发展,可以阅读 CONTRIBUTING.md 。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论