TensorFlowSharp

TensorFlow 的 .NET 绑定
授权协议 MIT
开发语言 C#
所属分类 神经网络/人工智能、 机器学习/深度学习
软件类型 开源软件
地区 不详
投 递 者 鲜于峰
操作系统 Windows
开源组织
适用人群 未知
 软件概览

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 。

  • 接上文,源代码是控制台的:所有输出Console.WriteLine(*);这样的代码一致改为this.textBox1.Text +="\r\n"+ string.Format(*); 这次又更新了四课内容,其中手写数字识别卡住了一会,主要原因是网上 TF#的MNIST手写数字识别代码太多太乱,此处补上最新版的(也是原作者的代码)供后人学习。 /// <summary>

  • Classes MonoPInvokeCallbackAttribute Thisattribute can be applied to callback functions that will be invoked fromunmanaged code to managed code. 此属性可应用于回调函数,该函数将从非托管代码调用到托管代码 PaddingFIFOQueue AFIFOQue

  • 图像做到瓶颈了,换深度学习了。 如同opencv基于c++的我不会最后用了Emgucv一样,Tensorflow我也是不会python和c++,最后决定用Tensorflowsharp(以后用TF#缩写了)。和Opencv与Emgucv一样的问题,TF教程漫天飞了,但TF#外面只有简单的介绍和已经训练好的识别,路漫漫我又来踏这第一步了,不知道能坚持多久。 安装就一句话:新建项目(我还是只习惯win

  • Csharp的小伙伴们,Tensorflowsharp走起! 1、常见验证码识别,使用Tensorflowsharp识别起来如此soeasy it is very good nice for you,so you must can fly,it is so cool! 2、基于谷歌二代机器学习,人工智能,数字字母验证你值得拥有! PS:C# win7 VS2017 出现不能加载DLL“libten

 相关资料
  • 这似乎很简单,但我无法让它正常工作。最简单的MAUI应用程序,标签绑定到“CountDisplay”,按钮绑定到“IncreaseCount”。命令绑定起作用,标签绑定第一次读取其值,但从未刷新。我做错了什么?谢谢你的帮助。 MainPage.xaml MainPageViewModel。反恐精英

  • 我要移民到。标准到。核心,但我面临一个问题: Microsoft.Azure.WebJobs.Host:索引方法FunctionName错误。Microsoft.Azure.WebJobs.Host:无法将参数MyService绑定到IMyService类型。请确保绑定支持参数Type。如果使用绑定扩展(例如Azure存储、ServiceBus、计时器等),请确保已在启动代码(例如builder.

  • ASP. NET Web API 2(非核心)是否也包含类似于[FromForm]属性的东西来绑定操作?或者我可以从ASP. NET Core添加dll到普通的ASP. NET Web API 2吗?{ “多部分/表单数据”。“,”例外类型“:”系统。网Http。系统上不支持的MediaTypeException“,”StackTrace“:”。网Http。HttpContentExtension

  • 我在吸毒。net core Azure函数,没有问题,代码如下。 但是,当我使用.net框架创建Azure函数应用时,它会抛出以下错误。 我尝试了所有可能的谷歌解决方案。这个错误显然是由于nuget和library导致的,因为相同的代码可以很好地用于v2.net核心函数应用程序。 我甚至也试过这个: 如果我把它作为guid或字符串,反之亦然,它会给出错误: 错误索引方法“函数1”。“RunAsyn

  • 我在我的一个API控制器上有一个POST方法,它采用单个字符串值: 我在这里发布的帖子请求正文如下: (例如,这是一个常规的HTTP POST,您可以通过提交浏览器表单以及使用HTTP客户端来启动) 在WebAPI的候选版本中,这已经悄无声息地停止了工作——它只是不再绑定foo。为了让代码正常工作,我不得不用以下方法替换该方法: 这是可行的,但它有点混乱,比以前的版本涉及更多的管道测试。 我是否错

  • 我有一个. net核心Blazor项目,我在其中构建了身份到项目中。我已自定义IdtyUser以使用整数ID而不是默认值。 我在通过默认设置确认电子邮件的功能方面遇到了一个奇怪的问题https://localhost:44348/identity/account/manage/email页 此内置页面有一个按钮,可将其发布到OnPostSendVerificationEmailAsync,如下所示

  • 问题内容: 这是我正在使用的,可以成功设置用户代理,而无法下载首选项。 Windows 7,Chrome 26,Selenium-dotnet-2.31.2,chromedriver_win_26.0.1383.0 取自chromedriver.log: 检查临时首选项文件,位于,否,并已设置。 问题答案: Selenium dotNet驱动程序不支持开箱即用。问题在于必须在节点下进行定义。本类不

  • 本文向大家介绍NET Core 与 .NET Framework 的区别?相关面试题,主要包含被问及NET Core 与 .NET Framework 的区别?时的应答技巧和注意事项,需要的朋友参考一下 .NET Core 就是 .NET Framework 的开源且跨平台版本。但微软毕竟不能维护两个不同的分支,一个跑在Windows上,一个跑在Linux(Unix Like)系统上,所以微软抽象