TensorFlowSharp 是对 TensorFlow C 语言版 API 的封装,绑定为 .NET API,也是 TensorFlow 的 C# 语言表述,以此来方便 C# 和 F# 开发人员使用 TensorFlow。
目前它与 TensoFlow 接口的绑定工作已经进入尾声,作者正在对 API 做一些优化。
最简单的入门方法是使用 TensorFlowSharp 的 NuGet 包,它包含了 .NET API 和 64 位 Linux、Mac 和 Windows 的原生库。
nuget install TensorFlowSharp
或者你也可以在 Visual Studio 中的 NuGet 包 UI 中选择它。
在 VS 中,要先确保你的环境是 .NET 4.6.1 或者更高版本,因为这个软件包使用了一些新的 .NET 特性。
当然,你也可以直接点击这里下载。
最好的学习方式是阅读 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 的发展,可以阅读 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)系统上,所以微软抽象