TensorFlow是Google开源的一款人工智能学习系统。为什么叫这个名字呢?Tensor的意思是张量,代表N维数组;Flow的意思是流,代表基于数据流图的计算。把N维数字从流图的一端流动到另一端的过程,就是人工智能神经网络进行分析和处理的过程。

话说在Android占领了移动端后,Google开源了TensorFlow,希望占领AI端。TF的特点是可以支持多种设备,大到GPU、CPU,小到平板和手机都可以跑起来TF。而且TF的使用很方便,几行代码就能开始跑模型,这让神经网络的入门变得非常简单。

本文是第一篇,都是最基础的内容,老手可以略过

一、TensorFlow的安装

在开始写代码之前,咱们先得把TensorFlow安装到电脑上。这里有两种方法,一是一个一个手动命令行安装,二是批量的图形化界面安装。

先看手动安装,我们安装好TensorFlow和upyter Notebook就可以了。

1)安装TensorFlow

Windows上:

安装CPU版本:管理员模式打开命令行,输入命令:pip install tensorflow

安装GPU版本:管理员模式打开命令行,输入命令:pip install tensorflow-gpu

Linux上:

命令和上面一样,如果你使用的是Python3点几的版本,那么安装命令为:

安装CPU版本:输入命令:pip3 install tensorflow

安装GPU版本:输入命令:pip3 install tensorflow-gpu

 
 

如果提示没有安装pip,mac的同学可以先通过命令安装pip:

1 命令行输入:curlhttps://bootstrap.pypa.io/ez_setup.py-o - | sudo python

2 命令行输入:sudo easy_install pip

2)安装Jupyter Notebook

这是一个交互式的笔记本,你可以理解为一个比较漂亮和简洁的编辑器。可以很方便地创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。一般用与做数据清理和转换,数值模拟,统计建模,机器学习等等。

输入命令:pip install jupyter

前面的方法是自己手动一个一个安装,其实已经有人帮我们做了一个大集合,不需要再一个一个手动安装了,下面介绍图形界面的批量安装方式:

1)安装Anaconda。Anaconda是什么?如果你把TensorFlow看做火箭筒,那么Anaconda就是军火库,里面有各种的科学计算,机器学习的Python工具库。在官网下载后,直接安装,然后打开Anaconda,就可以看到下面的页面:

 
 

2)点到第二行的Environments,可以看到很多的工具包,搜索TensorFlow,勾选上,然后点击Apply,进行安装就可以了。如果以后还需要其他的工具包,也可以在里面找到,勾选上进行安装。

 
 

OK,安装教程到此告一段落。有了jupyter和tensorflow,我们就可以开始基础的运算了。

二、TensorFlow的基础运算

在搞神经网络之前,先让我们把TensorFlow的基本运算,也就是加减乘除搞清楚。

首先,TensorFlow有几个概念需要进行明确:

1 图(Graph):用来表示计算任务,也就我们要做的一些操作。

2 会话(Session):建立会话,此时会生成一张空图;在会话中添加节点和边,形成一张图,一个会话可以有多个图,通过执行这些图得到结果。如果把每个图看做一个车床,那会话就是一个车间,里面有若干个车床,用来把数据生产成结果。

3 Tensor:用来表示数据,是我们的原料。

4 变量(Variable):用来记录一些数据和状态,是我们的容器。

5 feed和fetch:可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据。相当于一些铲子,可以操作数据。

形象的比喻是:把会话看做车间,图看做车床,里面用Tensor做原料,变量做容器,feed和fetch做铲子,把数据加工成我们的结果。

2.1 创建图和运行图:

下面我们创建一个图,并在Session中执行它,不用担心看不懂,每句代码都会注释,只有有编程基础,都能OK:

 
 

上面就是用TensorFlow进行了一个最简单的矩阵乘法。

2.2 创建一个变量,并用for循环对变量进行赋值操作

 
 

可以看到,除了变量创建稍微麻烦一些和必须建立session来运行,其他的操作基本和普通Python一样。

2.3 通过feed设置placeholder的值

有的时候,我们会在声明变量的时候不赋值,计算的时候才进行赋值,这个时候feed就派上用场了

 
 

到这里,恭喜你,已经成功入门TensorFlow~

五分钟带你入门TensorFlow的更多相关文章

  1. Python专题——五分钟带你了解map、reduce和filter

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题第6篇文章,给大家介绍的是Python当中三个非常神奇的方法:map.reduce和filter. 不知道大家看到ma ...

  2. 三分钟带你入门GitHub

    一,首先,我们来说一下什么是GitHub GitHub是一个基于git打造的开源社区 ,同时也是一个大型同性交友平台 ,作为一个专业的程序员,你非常有必要知道并使用GitHub:作为一个国际化社区,所 ...

  3. Python——五分钟带你弄懂迭代器与生成器,夯实代码能力

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是周一Python专题,给大家带来的是Python当中生成器和迭代器的使用. 我当初第一次学到迭代器和生成器的时候,并没有太在意,只是觉 ...

  4. 五分钟带你深入了解Redis

    相信phper都知道Redis是什么,既然如此,为表仪式感,首先我还是得说说什么是Redis. Redis是什么 redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是 ...

  5. 10分钟带你入门git到github

    git的产生背景 开局先来一个故事吧,故事看完如果不想看枯燥无味的指令,没关系我已经把这篇文章的内容录制成了一个视频,点击文末阅读原文就可以观看.或者说你已经熟练掌握git的使用了,可以直接跳到总结部 ...

  6. 45分钟带你入门Linux(附:笔者在工作室开讨论班录制的视频讲解)

    第一部分    熟悉Linux基本操作 一.初识Linux 1.Linux特点 ◊  开放性 ◊  多用户 ◊  多任务 ◊  良好的用户界面 ◊  设备独立性 ◊  丰富的网络功能 ◊  可靠的系统 ...

  7. 五分钟带你走入MP

    一.MyBatis-Plus简介 1.1MyBatis-Plus是什么? MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化 ...

  8. 5分钟带你入门Redis

    转载请标明出处: http://blog.csdn.net/forezp/article/details/61471712 本文出自方志朋的博客 1.redis概述 redis是一个开源的,先进的 k ...

  9. 三分钟带你入门 redis 高可用架构之哨兵

    什么是哨兵? 哨兵(Sentinel)是 redis 的高可用性解决方案,前面我们讲的主从复制它是高可用的基础,需要人工介入才能完成故障转移,哨兵可以解决这个问题,在主从复制情况下,当主节点发生故障时 ...

随机推荐

  1. 使用Costura.Fody将源DLL合并到目标EXE

    本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 一.本文主要是使用Costura.Fody工具将源DLL合并到目标EXE,因此,需要从以下任一链接下载: ①从Github地址 ...

  2. PHP---如何修改域名的指定的根目录

    如何修改域名的指定的根目录 环境:linux 使用工具:xShell 修改域名指定的文件根目录需要修改nginx的配置文件 第一步:连接xShell 第二步:进入根路径找到nginx的配置文件 cd ...

  3. git忽略已经提交的文件【转载】

    有时候我们添加.gitignore文件之前已经提交过了文件..gitignore只能忽略那些原来没有被track的文件(自添加以后,从未 add 及 commit 过的文件),如果某些文件已经被纳入了 ...

  4. oracle之 v$sql_monitor 监视正在运行的SQL语句的统计信息

    11g中引入了新的动态性能视图V$SQL_MONITOR,该视图用以显示Oracle监视的SQL语句信息.SQL监视会对那些并行执行或者消耗5秒以上cpu时间或I/O时间的SQL语句自动启动,同时在V ...

  5. socket初步

    简单demo:https://blog.csdn.net/ns_code/article/details/14105457

  6. 如何在项目中使用requireJS

    本文主要讲讲如何在一个项目中合理的使用requireJS,来加载js代码,这里是个实际例子,讲解不多, 看详情请连接到:http://www.cnblogs.com/evaling/p/6722760 ...

  7. .NET实现多个不同有效时间Session方案思考

    什么是Session?简单讲,Session是一种服务端用于保存每个客户端用户的状态信息的机制.客户端第一次访问时,服务端从分配一个空间专门存储该客户端的信息,后续访问时便可以直接获取或者更新状态信息 ...

  8. Nginx限制服务地址

    今天要在Nginx上设置禁止通过IP访问服务器,只能通过域名访问,这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,从网络上搜到以下解决方案. 我们在使用的时候会遇到很多的恶 ...

  9. JPype:实现在python中调用JAVA

    一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...

  10. Java复习——I/O与序列化

    File类 java.io.File只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问,我们可以通过通过给其构造函数传一个路径来构建以文件,传入的路径名有一个小问题,就是Window ...