TensorFlow 的 .NET 绑定 TensorFlowSharp

码农软件 · 软件分类 · 机器学习/深度学习 · 2019-08-05 17:26:39

软件介绍

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

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

使用 TensorFlowSharp

安装

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

nuget install TensorFlowSharp

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

在 VS 中,要先确保你的环境是 .NET 4.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 System
open System.IO
open TensorFlow

// set the path to find the native DLL
Environment.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 。

本文地址:https://www.codercto.com/soft/d/11714.html

程序开发心理学

程序开发心理学

(美)杰拉尔德·温伯格 / 邓俊辉 / 清华大学出版社 / 2004-1-1 / 39.00元

本书开创"以人为本"研究方法的先驱,在长达25年的岁月中一直保持活力,至今仍在继续。1997年,本书作者温伯格因其在软件领域的杰出贡献,被美国计算机博物馆的计算机名人堂选为首批5位成员之一。 在计算机界,还没有任何一本计算机方面的书,在初次出版之后,能够在长达25年的岁月中一直保持活力--而且这种活力到今天仍在继续。《程序开发心理学》是开创"以人为本"研究方法的先驱,它以其对程序员们在智力、......一起来看看 《程序开发心理学》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器