一、TensorFlow 简介

TensorFlow 是 Google 开源的一款人工智能学习系统。为什么叫这个名字呢?

Tensor 的意思是张量,代表 N 维数组;Flow 的意思是流,代表基于数据流图的计算。

把 N 维数字从流图的一端流动到另一端的过程,就是人工智能神经网络进行分析和处理的过程。

话说在 Android 占领了移动端后,Google开源了 TensorFlow,希望占领 AI 端。

TF的特点是可以支持多种设备,大到 GPU、CPU,小到平板和手机都可以跑起来 TF。

而且 TF 的使用很方便,几行代码就能开始跑模型,这让神经网络的入门变得非常简单。

二、TensorFlow 的安装

因为精力有限,此处只介绍在windows10平台上的安装,其他平台的安装方法google上一抓一大把。

我安装的方法是用最简单粗暴的方法:Anaconda

1.在Anaconda官网上下载64位



(注意自己的python的版本)

在安装过程注意的一点是勾选如下图中的两个选项,其他的默认即可:

2.安装成功后打开Anaconda,切换到environment功能栏,可以看到很多的工具包,搜索Tensorflow,勾选上,然后点击Apply,进行安装即可。

三、TensorFlow的基础运算

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

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

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

  • 会话(Session):建立会话,此时会生成一张空图;在会话中添加节点和边,形成一张图,一个会话可以有多个图,通过执行这些图得到结果。

如果把每个图看做一个车床,那会话就是一个车间,里面有若干个车床,用来把数据生产成结果。

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

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

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

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

创建图和运行图

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

#引入TensorFlow包
import tensorflow as tf
#创建一个常量v1,它是1*2的矩阵
v1=tf.constant([[2,3]])
#创建一个常量v2,它是2*1的矩阵
v2=tf.constant([[2],[3]])
#创建一个矩阵乘法,这里要注意的是,创建了乘法后,是不会立即执行的,要在会话中执行才行
product=tf.matmul(v1,v2) #打印,得到的不是乘法的结果,而是得到乘法本身
print(product) #定义一个会话
sess=tf.Session()
#运行乘法,得到结果
result=sess.run(product)
#打印结果
print(result)
#关闭会话
sess.close()

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

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

#创建一个变量num
num = tf.Variable(0,name = "count")
#创建一个加法操作,把当前的数字加10
new_value = tf.add(num,10)
#创建一个赋值操作,将new_value的值赋值给num
op = tf.assign(num,new_value) #使用这种写法,在运行完毕以后,会话自动关闭
with tf.Session() as sess:
#初始化变量
sess.run(tf.global_variables_initializer())
#打印num的初始值
print(sess.run(num))
#创建一个for循环,每次给num+10,并打印出来
for i in range(5):
sess.run(op)
print(sess.run(num))

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

通过 feed 设置 placeholder 的值

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


#创建一个变量占位符input1
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32) #创建一个乘法操作,把input1和input2相乘
new_value=tf.multiply(input1,input2) #使用这种写法,运行完毕后,会话会自动关闭
with tf.Session() as sess: #打印new_value的值,在运算时,用feed设置两个输入的值
print(sess.run(new_value,feed_dict={input1:23.0,input2:11.0}))

人工智能-深度学习(2)TensorFlow安装及基本使用(学习笔记)的更多相关文章

  1. 深度学习之TensorFlow安装与初体验

    深度学习之TensorFlow安装与初体验 学习前 搞懂一些关系和概念 首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的 ...

  2. TF之NN:matplotlib动态演示深度学习之tensorflow将神经网络系统自动学习并优化修正并且将输出结果可视化—Jason niu

    import tensorflow as tf import numpy as np import matplotlib.pyplot as plt def add_layer(inputs, in_ ...

  3. 学习笔记TF045:人工智能、深度学习、TensorFlow、比赛、公司

    人工智能,用计算机实现人类智能.机器通过大量训练数据训练,程序不断自我学习.修正训练模型.模型本质,一堆参数,描述业务特点.机器学习和深度学习(结合深度神经网络). 传统计算机器下棋,贪婪算法,Alp ...

  4. 02基于python玩转人工智能最火框架之TensorFlow人工智能&深度学习介绍

    人工智能之父麦卡锡给出的定义 构建智能机器,特别是智能计算机程序的科学和工程. 人工智能是一种让计算机程序能够"智能地"思考的方式 思考的模式类似于人类. 什么是智能? 智能的英语 ...

  5. 深度学习篇——Tensorflow配置(傻瓜安装模式)

    前言 如果你是一个完美主义者,那么请绕过此文,请参考<深度学习篇——Tensorflow配置(完美主义模式)> 安装 pip install tensorflow ok,只要不报错,安装就 ...

  6. 深度学习(TensorFlow)环境搭建:(一)硬件选购和主机组装

    一.硬件采购 近年来,人工智能AI越来越多被人们所了解,尤其是AlphaGo的人机围棋大战之后,机器学习的热潮也随之高涨.最近,公司采购了几批设备,通过深度学习(TensorFlow)来研究金融行业相 ...

  7. 人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练

    人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练 MXNet 是一个轻量级.可移植.灵活的分布式深度学习框架,2017 年 1 月 23 日,该项目进入 Apache 基金会,成为 ...

  8. 金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_189 笔者投入M1的怀抱已经有一段时间了,俗话说得好,但闻新人笑,不见旧人哭,Intel mac早已被束之高阁,而M1 mac已经 ...

  9. 人工智能深度学习Caffe框架介绍,优秀的深度学习架构

    人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...

  10. 深度学习之TensorFlow构建神经网络层

    深度学习之TensorFlow构建神经网络层 基本法 深度神经网络是一个多层次的网络模型,包含了:输入层,隐藏层和输出层,其中隐藏层是最重要也是深度最多的,通过TensorFlow,python代码可 ...

随机推荐

  1. 【stl学习笔记】vector

    vector是定义于namespace std内的template: namespace std { template<class T, class Allocator = allocator& ...

  2. DRBD+Heratbeat+NFS高可用文件共享存储

    一.概述 .通过ha-log日志可以看出主释放资源,备接管资源. 来自为知笔记(Wiz)

  3. JAVA_the user operation is waiting怎么办

    彻底解决 MyEclipse出现the user operation is waiting的问题   2011-05-31 10:32:30|  分类: 软件编程 |  标签:java  myecli ...

  4. swiper插件制作轮播图swiper2.x和3.x区别

    swiper3.x仅仅兼容到ie10+.比較适合移动端. swiper3.x官网  http://www.swiper.com.cn/ swiper2.x能够兼容到ie7+.官网是http://swi ...

  5. C# 谁改了我的代码 使用 Resharper 快速做适配器

    C# 谁改了我的代码   本文告诉大家一个特殊的做法,可以修改一个字符串常量 我们来写一个简单的程序,把一个常量字符串输出 private const string str = "linde ...

  6. 嵌入式开发之davinci--- 8148/8168/8127 中的添加算饭scd 场景检测 文档简介

    Osd Scd (1)     Introduction over view a)         scene change detection block diagram a)         gr ...

  7. HDFS集中式缓存管理(Centralized Cache Management)

    Hadoop从2.3.0版本号開始支持HDFS缓存机制,HDFS同意用户将一部分文件夹或文件缓存在HDFS其中.NameNode会通知拥有相应块的DataNodes将其缓存在DataNode的内存其中 ...

  8. AJAX请求提交数据

    1,AJAX准备知识:JSON JSON指的是JavaScript对象表示方法(JavaScript Object Notation) JSON是轻量级的文本数据交换格式 JSON独立于语言 JSON ...

  9. 设计模式-(18)命令模式 (swift版)

    一,概念: 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”.但在某些场合,比如要对行为进行“记录.撤销/重做.事务”等处理,这种无法抵御变化的紧耦合是不合适的.在这种情况下,如何将 ...

  10. Masonry自动布局:复合约束

    前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万 ...