Tensorflow入门-上

前置准备

在阅读本文之前,请确定你已经了解神经网络的基本结构以及前向传播、后向传播的基本原理,如果尚未了解,可以查看下文。

深度学习之神经网络

什么是TensorFlow?

TensorFlow是Google基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网络中进行分析和处理的系统。

 

TensorFlow可被用于语音识别图像识别等多项机器学习和深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到异步智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。

安装

先确定需要哪种类型的TensorFlow:

  • 仅支持CPU运算版本:如果电脑没有NVIDIA®的GPU,那么必须安装这个版本。这个版本的TensorFlow安装非常简单(安装仅需一个命令,5到10分钟),所以即使系统中有满足要求的NVIDIA®GPU官方还是建议在学习阶段安装这个版本。
  • 支持GPU运算版本:TensorFlow程序在GPU下运行比在GPU下运行明显快很多。如果系统中包含NVIDIA®GPU满足下一小节所示的条件并且程序对性能要求很高,建议安装此版本。

我是在Windows平台下安装CPU版本的TensorFlow,建议初学者安装此版本。

  1. 安装Python 3.5和pip【可以通过安装Anaconda 3同时获取】
  2. 设置环境变量
  3. 一键安装(CPU版)
    pip install --upgrade --ignore-installed tensorflow

     

更加详细的安装教程请见:安装指南

测试

安装之后可以测试是否安装成功,可以编写以下代码(功能是进行基本的向量加法):

1 import tensorflow as tf
2 a = tf.constant([1.0,2.0],name="a")
3 b = tf.constant([2.0,3.0],name="b")
4 result = a+b
5 sess = tf.Session()
6 print(sess.run(result))

如果安装成功,会显示:

[3. 5.]

基本概念介绍

TensorFlow由Tensor和Flow组成,Tensor是张量的意思,在这里可以理解成多维数组,Flow是“流”,张量像“流”一样相互流动和转化,形成计算模型。

计算图

TensorFlow是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图,可以把计算图看作是一种有向图,TensorFlow中的每个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。

TensorFlow中有一个默认的计算图,它会自动将定义的计算转化为该计算图中的节点,下面代码体现了如何查看默认的计算图:

1 import tensorflow as tf
2 print(tf.get_default_graph)

张量

TensorFlow中的所有数据如图片、语音等都是以张量这种数据结构的形式表示的。张量是一种组合类型的数据类型,表示为一个多维数组,通用的形式为

[T1,T2,T3,...,TN],其中T可以是在TensorFlow中指定类型的单个数字,也可以是一个矩阵。

张量的维数又叫张量的,是张量维数的一个数量描述。如下分别表示0维、1维、2维和3维的张量:

1 1    #维度为0的标量
2 [1,2,3]   #维度为1,一维向量
3 [[1,2],[3,4]]   #维度为2, 二维矩阵
4 [[[1,2],[3,4]],[[1,2],[3,4]]]   #维度为3,3维空间矩阵

维度要看张量的最左边有多少个左中括号,有n个,则这个张量就是n维张量。

 

张量有3个重要的属性——名字、维数和数据类型,如下代码:

1 #coding:utf-8
2 import tensorflow as tf
3 # tf.constant是一个计算,这个计算的结果为一个张量,保存在变量a中。
4 a = tf.constant ([1.0, 2.0], name = "a")
5 b= tf.constant ([2.0, 3.0], name = "b")
6 result = tf.add (a, b, name="add")
7 print(result)

输出如下:

1 Tensor("add:0", shape=(2,), dtype=float32)

张量和计算图上的节点是对应的,张量可以使用“node:src_output”来表示,如上文中的"add:0"表示计算节点add中的第一个输出(从0开始计数)。

会话

TensorFlow使用计算图表示计算过程,它是依据各个操作之间的依赖关系生成的。这是一个底层的编程模型,你需要先定义一个数据流图,然后创建一个TensorFlow会话以在多个本地或在远程的设备上运行流图的各个部分。

构造阶段完成后,才能启动图。启动图的第一步是创建一个Session对象,如果无任何创建参数,会话构造器将启动默认图。会话会管理TensorFlow程序运行时的所有资源。当所有计算完成之后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄露的问题。

 

TensorFlow中使用会话的模式一般有两种:

1、需要明确调用会话生成函数和关闭会话函数

1 # 创建一个会话。
2 sess = tf.Session()
3 
4 # 使用会话得到之前计算的结果。
5 sess.run(...)
6 
7 # 关闭会话使得本次运行中使用到的资源可以被释放。
8 sess.close()

例子:

 1 #coding:utf-8
 2 import tensorflow as tf
 3 #使用张量记录中间结果
 4 a = tf.constant([1.0, 2.0], name="a")
 5 b = tf.constant([2.0, 3.0], name="b")
 6 result = a + b
 7 
 8 # 创建一个会话。
 9 sess = tf.Session()
10 
11 # 使用会话得到之前计算的结果。
12 print(sess.run(result))
13 
14 # 关闭会话使得本次运行中使用到的资源可以被释放。
15 sess.close()

输出:

1 [3. 5.]

使用这种模式时,在所有计算完成之后,需要明确调用Session.close函数来关闭会话释放资源。然而,当程序因为异常而退出时,关闭会话的函数可能就不会执行从而导致资源泄露。

所以TensorFlow可以通过Python的上下文管理器来使用会话。

2、通过Python的上下文管理器来使用会话

1 #创建一个会话,并通过Python中的上下文管理器来管理
2 with tf.Session() as sess:
3 
4     #使用这个会话来计算关心的结果
5     sess.run(...)
6 #不再需要调用“Session.close()”函数来关闭会话,当上下文退出时会话关闭和资源释放也会自动完成。

例如:

1 import tensorflow as tf
2 
3 #使用张量记录中间结果
4 a = tf.constant([1.0, 2.0], name="a")
5 b = tf.constant([2.0, 3.0], name="b")
6 result = a + b
7 
8 with tf.Session() as sess:
9     print(sess.run(result))123456789

通过Python上下文管理器的机制,只要将所有的计算放在with的内部就可以了。当上下文管理器退出时就会自动释放所有的资源。这样既解决了因为异常退出时资源释放的问题,同时也解决了忘记调用Session.close函数而产生的资源泄露。

变量

TensorFlow变量(Variable)是在程序中表示共享、持久状态的最佳方式。

通过tf.Variable类操作变量。tf.Variable表示值可以被操作改变的张量。跟tf.Tensor对象不一样,tf.Variable存在于单个session.run调用的上下文之外。

在内部,tf.Variable存储一个持久张量,允许读取和修改张量的值。这些修改是跨tf.Session可见的,所以不同的工作节点可以看到相同的值tf.Variable。

 

创建变量最好的方法是调用tf.get_variable功能。此功能要求你指定变量的名字,此名称将被其它副本用于访问相同的变量,以及在检查点和导出模型时命名此变量的值。tf.get_variable还允许你重复使用先前创建的同名变量,从而可以轻松定义重复使用图层的模型。

用tf.get_variable来创建一个变量,只需提供名字和形状

1 my_variable = tf.get_variable("my_variable", [1, 2, 3])

这将创建一个名为“my_variable”的变量,它是一个带有形状[1,2,3]的3维张量。这个默认的dtype是tf.float32,其初始值将通过tf.glorot_uniform_initializer随机化。

 

你可以选择指定dtype和初始化程序tf.get_variable,例如:

1 my_int_variable = tf.get_variable("my_int_variable", [1, 2, 3], dtype=tf.int32,initializer=tf.zeros_initializer)

TensorFlow提供了许多方便的初始化程序。或者,你可以初始化一个tf.Variable为具有tf.Tensor的值。例如:

1 other_variable = tf.get_variable("other_variable", dtype=tf.int32, initializer=tf.constant([23, 42]))

请注意,当初始化器是一个tf.Tensor,你不应该指定变量的形状,因为用来初始化张量的形状将被复用。

变量集合

因为TensorFlow程序中不连接的部分之间可能需要创建变量,所以用单一的方法来访问所有的变量是有用的。出于这个原因,TensorFlow提供collections(集合),它们被命名为张量或其它对象的列表,例如tf.Variable实例。

默认情况下每个tf.Variable被放置在以下两个集合中:

  • tf.GraphKeys.GLOBAL_VARIABLES——可以在多个设备上共享的变量
  • tf.GraphKeys.TRAINABLE_VARIABLES——TensorFlow将计算梯度的变量。

如果你不想要一个变量是可训练的,可把它添加到tf.GraphKeys.LOCAL_VARIABLES集合。例如,以下代码片段演示了如何添加一个名为my_local的变量到这个集合:

1 my_local = tf.get_variable("my_local", shape=(), collections=[tf.GraphKeys.LOCAL_VARIABLES])

或者,你可以指定trainable=False作为tf.Variable的参数:

1 my_non_trainable = tf.get_variable("my_non_trainable", shape=(),trainable=False)

 

你也可以使用自己的集合。任何字符串都是有效的集合的名称,并且不需要显示创建集合。在创建变量之后向变量添加一个变量(或任何其它对象),调用tf.add_to_collection。例如,下面的代码添加一个名为my_local的现有变量到一个名为my_collection_name的集合:

1 tf.add_to_collection("my_collection_name", my_local)

为了检索你已经放置在集合中的所有变量(或其它对象)的列表,你可以使用:

1 tf.get_collection("my_collection_name")

 

 

参考链接:http://chrer.com/2018/08/05/TensorFlow%E5%85%A5%E9%97%A8-%E4%B8%8A/#moreTensorFlow

 

原文地址:https://www.cnblogs.com/lfri/p/10356336.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


MNIST数据集可以说是深度学习的入门,但是使用模型预测单张MNIST图片得到数字识别结果的文章不多,所以本人查找资料,把代码写下,希望可以帮到大家~1#BudingyourfirstimageclassificationmodelwithMNISTdataset2importtensorflowastf3importnumpyasnp4impor
1、新建tensorflow环境(1)打开anacondaprompt,输入命令行condacreate-ntensorflowpython=3.6注意:尽量不要更起名字,不然环境容易出错在选择是否安装时输入“y”(即为“yes”)。其中tensorflow为新建的虚拟环境名称,可以按喜好自由选择。python=3.6为指定python版本为3
这篇文章主要介绍“张量tensor是什么”,在日常操作中,相信很多人在张量tensor是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
tensorflow中model.fit()用法model.fit()方法用于执行训练过程model.fit(训练集的输入特征,训练集的标签,batch_size,#每一个batch的大小epochs,#迭代次数validation_data=(测试集的输入特征,
https://blog.csdn.net/To_be_little/article/details/124438800 目录1、查看GPU的数量2、设置GPU加速3、单GPU模拟多GPU环境1、查看GPU的数量importtensorflowastf#查看gpu和cpu的数量gpus=tf.config.experimental.list_physical_devices(device_type='GPU')cpus=tf.c
根据身高推测体重const$=require('jquery');consttf=require('@tensorflowfjs');consttfvis=require('@tensorflowfjs-vis');/*根据身高推测体重*///把数据处理成符合模型要求的格式functiongetData(){//学习数据constheights=[150,151,160,161,16
#!/usr/bin/envpython2#-*-coding:utf-8-*-"""CreatedonThuSep610:16:372018@author:myhaspl@email:myhaspl@myhaspl.com二分法求解一元多次方程"""importtensorflowastfdeff(x):y=pow(x,3)*3+pow(x,2)*2-19return
 继续上篇的pyspark集成后,我们再来看看当今热的不得了的tensorflow是如何继承进pycharm环境的参考:http://blog.csdn.net/include1224/article/details/53452824思路其实很简单,说下要点吧1.python必须要3.564位版本(上一篇直接装的是64位版本的Anaconda)2.激活3.5版本的
首先要下载python3.6:https://www.python.org/downloadselease/python-361/接着下载:numpy-1.13.0-cp36-none-win_amd64.whl 安装这两个:安装python3.6成功,接着安装numpy.接着安装tensorflow: 最后测试一下: python3.6+tensorflow安装完毕,高深的AI就等着你去
参考书《TensorFlow:实战Google深度学习框架》(第2版)以下TensorFlow程序完成了从图像片段截取,到图像大小调整再到图像翻转及色彩调整的整个图像预处理过程。#!/usr/bin/envpython#-*-coding:UTF-8-*-#coding=utf-8"""@author:LiTian@contact:694317828@qq.com
参考:TensorFlow在windows上安装与简单示例写在开头:刚开始安装的时候,由于自己的Python版本是3.7,安装了好几次都失败了,后来发现原来是tensorflow不支持3.7版本的python,所以后来换成了Python3.6,就成功了。。。。。anconda:5.3.2python版本:3.6.8tensorflow版本:1.12.0安装Anconda
实验介绍数据采用CriteoDisplayAds。这个数据一共11G,有13个integerfeatures,26个categoricalfeatures。Spark由于数据比较大,且只在一个txt文件,处理前用split-l400000train.txt对数据进行切分。连续型数据利用log进行变换,因为从实时训练的角度上来判断,一般的标准化方式,
 1)登录需要一个 invitationcode,申请完等邮件吧,大概要3-5个小时;2)界面3)配置数据集,在右边列设置 
模型文件的保存tensorflow将模型保持到本地会生成4个文件:meta文件:保存了网络的图结构,包含变量、op、集合等信息ckpt文件:二进制文件,保存了网络中所有权重、偏置等变量数值,分为两个文件,一个是.data-00000-of-00001文件,一个是.index文件checkpoint文件:文本文件,记录了最新保持
原文地址:https://blog.csdn.net/jesmine_gu/article/details/81093686这里只是做个收藏,防止原链接失效importosimportnumpyasnpfromPILimportImageimporttensorflowastfimportmatplotlib.pyplotaspltangry=[]label_angry=[]disgusted=[]label_d
 首先声明参考博客:https://blog.csdn.net/beyond_xnsx/article/details/79771690?tdsourcetag=s_pcqq_aiomsg实践过程主线参考这篇博客,相应地方进行了变通。接下来记载我的实践过程。  一、GPU版的TensorFlow的安装准备工作:笔者电脑是Windows10企业版操作系统,在这之前已
1.tensorflow安装  进入AnacondaPrompt(windows10下按windows键可找到)a.切换到创建好的tensorflow36环境下:activatetensorflow36    b.安装tensorflow:pipinstlltensorflow    c.测试环境是否安装好       看到已经打印出了"h
必须走如下步骤:sess=tf.Session()sess.run(result)sess.close()才能执行运算。Withtf.Session()assess:Sess.run()通过会话计算结果:withsess.as_default():print(result.eval())表示输出result的值生成一个权重矩阵:tf.Variable(tf.random_normal([2,3]
tf.zeros函数tf.zeros(shape,dtype=tf.float32,name=None)定义在:tensorflow/python/ops/array_ops.py.创建一个所有元素都设置为零的张量. 该操作返回一个带有形状shape的类型为dtype张量,并且所有元素都设为零.例如:tf.zeros([3,4],tf.int32)#[[0,0,
一、Tensorflow基本概念1、使用图(graphs)来表示计算任务,用于搭建神经网络的计算过程,但其只搭建网络,不计算2、在被称之为会话(Session)的上下文(context)中执行图3、使用张量(tensor)表示数据,用“阶”表示张量的维度。关于这一点需要展开一下       0阶张量称