TensorFlowSharp入门使用C#编写TensorFlow人工智能应用

TensorFlowSharp入门使用C#编写TensorFlow人工智能应用学习。

TensorFlow简单介绍

TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow的表现比第一代的DistBelief快了2倍。

TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用TensorFlow。任何基于梯度的机器学习算法都能够受益于TensorFlow的自动分化(auto-differentiation)。通过灵活的Python接口,要在TensorFlow中表达想法也会很容易。

TensorFlow 对于实际的产品也是很有意义的。将思路从桌面GPU训练无缝搬迁到手机中运行。

示例Python代码:

import tensorflow as tfimport numpy as np# Create 100 phony x, y data points in NumPy, y = x * 0.1 + 0.3x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3# Try to find values for W and b that compute y_data = W * x_data + b# (We know that W should be 0.1 and b 0.3, but TensorFlow will# figure that out for us.)W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b# Minimize the mean squared errors.loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)# Before starting, initialize the variables.  We will ‘run‘ this first.init = tf.global_variables_initializer()# Launch the graph.sess = tf.Session()
sess.run(init)# Fit the line.for step in range(201):
    sess.run(train)    if step % 20 == 0:        print(step, sess.run(W), sess.run(b))# Learns best fit is W: [0.1], b: [0.3]

使用TensorFlowSharp

GitHub:https://github.com/migueldeicaza/TensorFlowSharp

官方源码库,该项目支持跨平台,使用Mono。

可以使用NuGet 安装TensorFlowSharp,如下:

Install-Package TensorFlowSharp

编写简单应用

使用VS2017新建一个.NET Framework 控制台应用 tensorflowdemo,接着添加TensorFlowSharp 引用。

TensorFlowSharp 包比较大,需要耐心等待。

然后在项目属性中生成->平台目标 改为 x64

打开Program.cs 写入如下代码:

        static void Main(string[] args)
        {            using (var session = new TFSession())
            {                var graph = session.Graph;
                Console.WriteLine(TFCore.Version);                var a = graph.Const(2);                var b = graph.Const(3);
                Console.WriteLine("a=2 b=3");                // 两常量加
                var addingResults = session.GetRunner().Run(graph.Add(a, b));                var addingResultValue = addingResults[0].GetValue();
                Console.WriteLine("a+b={0}", addingResultValue);                // 两常量乘
                var multiplyResults = session.GetRunner().Run(graph.Mul(a, b));                var multiplyResultValue = multiplyResults[0].GetValue();
                Console.WriteLine("a*b={0}", multiplyResultValue);                var tft = new TFTensor(Encoding.UTF8.GetBytes($"Hello TensorFlow Version {TFCore.Version}! LineZero"));                var hello = graph.Const(tft);                var helloResults = session.GetRunner().Run(hello);
                Console.WriteLine(Encoding.UTF8.GetString((byte[])helloResults[0].GetValue()));
            }
            Console.ReadKey();
        }

运行程序结果如下:

TensorFlow C# image recognition

图像识别示例体验

https://github.com/migueldeicaza/TensorFlowSharp/tree/master/Examples/ExampleInceptionInference

下面学习一个实际的人工智能应用,是非常简单的一个示例,图像识别。

新建一个 imagerecognition .NET Framework 控制台应用项目,接着添加TensorFlowSharp 引用。

然后在项目属性中生成->平台目标 改为 x64

接着编写如下代码:

 

这里需要注意的是由于需要下载初始Graph和标签,而且是google的站点,所以得使用一些特殊手段。

最终我随便下载了几张图放到bin\Debug\img

然后运行程序,首先确保bin\Debug\tmp文件夹下有tensorflow_inception_graph.pb及imagenet_comp_graph_label_strings.txt。

人工智能的魅力非常大,本文只是一个入门,复制上面的代码,你没法训练模型等等操作。

时间: 2024-10-09 22:51:30

TensorFlowSharp入门使用C#编写TensorFlow人工智能应用的相关文章

C#编写TensorFlow人工智能应用

C#编写TensorFlow人工智能应用 TensorFlowSharp入门使用C#编写TensorFlow人工智能应用学习. TensorFlow简单介绍 TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow的表现比第一代的DistBelief快了2倍. TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用TensorFlow.任何基于梯度的机器学习算法都能够受益于TensorFlow的自动分化(auto-

微软ML.NET 0.5开始支持了TensorFlow人工智能模型

微软在5月释出由微软研究院开发.发展了十年的机器学习框架ML.NET,今释出了ML.NET 0.5,最大的更新便是开始支持TensorFlow,开发者可以在ML.NET中直接使用已经训练好的TensorFlow模型,进行评分(Scoring).另外,微软正在开发新的ML.NET API,届时将会弃用现行的LearningPipeline API.适逢.NET Conf 2018,微软顺势释出ML.NET 0.5,距离5月释出的ML.NET 0.1已经距离一段时间,这次带来巨大的更新,微软在ML.

SLAM+语音机器人DIY系列:(二)ROS入门——4.如何编写ROS的第一个程序hello_world

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用.本章节主要内容: 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的s

mybatis入门篇1 --- 编写入门小程序

首先简单说一下为什么使用mybatis,我们上一个项目使用的JDBC,所有的sql语句都是写在java程序中,这样的就会使sql语句与java程序高度耦合,不符合我们的高内聚,低耦合情况,我们只希望你给我一个接口并且返回指定类型的程序,具体如何实现我不管,这样才会更好的进行操作,Hibernate跟mybatis都属于这种情况,hibernate属于全自动框架,mybatis属于半自动框架,什么意思?hibernate对于简单的数据库操作很方便,但是一旦涉及到复杂的数据库操作或者想要对sql语句

TensorFlow入门:mac 安装 TensorFlow

开发环境: mac os 10.12.5 Python 2.7.10 GCC 4.2.1 mac默认是不带pip的,安装pip. sudo easy_install pip 1.安装virtualenv sudo pip install virtualenv --upgrade 创建一个工作目录: sudo virtualenv --system-site-packages ~/tensorflow 进行该目录,激活沙箱 cd ~/tensorflow source bin/activate 2

Tensorflow人工智能神经网络学习

下载与安装 你可以使用我们提供的二进制包, 或者使用源代码, 安装 TensorFlow. 二进制安装 TensorFlow Python API 依赖 Python 2.7 版本. 在 Linux 和 Mac 下最简单的安装方式, 是使用 pip 安装. 如果在安装过程中遇到错误, 请查阅 常见问题. 为了简化安装步骤, 建议使用 virtualenv, 教程见 这里. Ubuntu/Linux # 仅使用 CPU 的版本 $ pip install https://storage.googl

第3章:Maven使用入门/3.3 编写测试代码

编写测试代码 在约定src/test/java下新建测试代码类 `package com.wys.myapp.helloworld; import org.junit.Test;import static org.junit.Assert.*; public class HelloWorldErrTest { @Testpublic void SayHello(){HelloWorld helloWorld = new HelloWorld();String restult = helloWor

第3章:Maven使用入门/3.1 编写POM

编写POM 运行环境:window 文件保存目录:D:\MavenTest 新建POM文件存在文件夹:HelloWord 新建POM文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.

第3章:Maven使用入门/3.2 编写源代码

编写源代码 安装Maven约定,源代码要存放在src/java/main,所以依次创建三个目录 按照POM中的<groupId>com.wys.myapp</groupId>和<artifactId>HelloWord</artifactId>创建目录:com\wys\myapp\helloWorld,这个目录是约定存在本项目的Java源代码的,所以最后的目录是: 创建HelloWorld.java源代码文件: package com.wys.myapp.m