深度学习入门笔记6 tensorflow学习

简介: 深度学习入门笔记6 tensorflow学习

Tensorflow

Tensorflow简介

TensorFlow™ 是一个开放源代码软件库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)。TensorFlow™ 最初是由 Google Brain 团队(隶属于 Google 的 AI 部门)中的研究人员和工程师开发的,可为机器学习和深度学习提供强力支持,并且其灵活的数值计算核心广泛应用于许多其他科学领域。

Tensorflow安装

Tensorflow分为CPU与GPU两个版本,可以使用如下命令安装Tensorflow。

pip install tensorflow(CPU版本)

pip install tensorflow-gpu(GPU版本)

安装之后,在程序中就可以通过import导入使用,按照管理,我们重命名为tf。

import tensorflow as tf

可以通过如下的方式查看tenforflow的版本:

tf.__version__

import tensorflow as tf
# 查看tensorflow的版本。注意:当前tensorflow不支持Python3.7。
tf.__version__

计算方式

Tensorflow是通过数据流图完成计算的。Tensorflow的名称就是Tensor + flow。

Tensor就是张量,张量是深度学习中表示数据的标准方式。简单的说,张量就是多维数组。

flow就是数据的流动,是张量从一端流动到另外一端的过程。

图是由节点与边连接构成,在Tensorflow中,节点表示操作,边表示张量对象(张量的流动)。

官方案例演示

http://playground.tensorflow.org

第一个程序

使用tensorflow的常量编写第一个tensorflow程序Hello world,并观察与以前Python程序有何不同之处。

# Python版本
# s = "Hello"
# s2 = " World"
# s3 = s + s2
# print(s3)
# tensorflow
# 创建tensorflow中的常量。
s = tf.constant("Hello", name="s")
s2 = tf.constant(" World", name="s2")
# s3 = s + s2
s3 = tf.add(s, s2, name="my_add")
print(s)
print(s2)
print(s3)
# tensorflow与Python的计算规则不同,我们输出相关的变量(张量),并不能够得到计算的结果。
# tensorflow是基于计算图的,我们创建的张量会加入到计算图当中。我们对张量执行的操作(加,减,乘,除等)
# 并没有产生真正的计算,而是仅仅描述计算规则而已。

在Tensorflow中,当我们期望计算时,实际上,并没有执行真正的计算,而是把这些计算操作添加到图当中。而计算图在稍后才会执行(图只是用来描述了计算的规则,而并没有产生真正的计算)。

简单说,使用Tensorflow包含两个步骤:

  • 构建图
  • 执行图

思考:为什么要使用图的概念,而不是直接进行像Python那样执行计算?

图的创建

当我们引入tensorflow时,一个空的默认图就已经创建完成了。我们后续创建的节点都会关联到该默认图上。当然,我们也可以自己创建图,然后关联相关的节点。

说明:

  • 可以通过操作对象的graph属性来获取操作所属的图。
  • 可以使用with与as_default来切换默认图。
  • 不同图中定义的操作,不能进行运算。
  • Tensorflow对类型的要求非常严格,不同类型之间无法进行运算。
# 当我们引入tensorflow时,就会创建一个默认图。
# import tensorflow as tf
# 获取默认图。
g = tf.get_default_graph()
# 当我们创建张量,执行操作时,就会自动加入到默认图当中。
a = tf.constant(100)
# 通过张量的graph属性,可以获取张量所属的图。
# print(a.graph is g)
# 我们也可以去创建自己的图,而不是使用默认图。
my_graph = tf.Graph()
# 我们可以通过上下文管理器来设置默认图。
# as_default()返回上下文管理器对象,我们可以与with结合使用。
# 在__enter__方法中,会将当前的图(调用as_default方法的图)设置为默认图。
# 在__exit__方法中,会将默认图恢复成修改之前的图。
with my_graph.as_default():
    # with上下文中,my_graph就是默认图。
#     print(my_graph is tf.get_default_graph())
    # 我们在with上下文中,创建的张量,加入到了my_graph图中。
    b = tf.constant(200)
print(b.graph is my_graph)    
# print(my_graph is g)
# print(my_graph is tf.get_default_graph())
# 不在同一个图的节点不能进行计算。
# 错误!
# a + b
# 在Python中,不同的类型也可能进行计算。例如:int与float, int与bool。
# 但是,Tensorflow的计算对类型要求非常严格,只要不是同一个类型,就不能进行计算。
c = tf.constant(1, dtype=tf.int32)
d = tf.constant(2, dtype=tf.int64)
# 错误。只要不是同一个类型,就不能进行计算。(int32与int64也不可以。)
# c + d
a = 1
b = 2.3
a + b
### 图的运行
我们可以通过创建Session对象,来运行图(获取数据)。Session对象在使用之后需要进行关闭,我们可以使用with来简化关闭的操作。  
我们也可以创建交互式会话(InteractiveSession)。二者之间的差别在于:交互式会话相当于设置了默认的Session。在进行求值时,无需显式指定。

变量与占位符

变量与占位符也是张量Tensor类型。

  • 占位符表示其值由用户进行传递,通常用来存储样本数据与标签。
  • 变量在计算过程中,可以改变其值,通常用来存储模型的参数。

说明:

  • 变量必须要初始化后才能使用。
  • 占位符的数据,需要使用实际值进行填充。

变量的作用域

在我们使用tf.Variable定义变量时,每次执行,就会创建一个新的变量。有时,我们可能并不总是想创建新的变量,而是可以复用已经创建的变量。这样,就可以实现变量共享。

通过tf.variable_scope方法可以创建变量作用域,通过该作用域获取变量时,会进行检查。因此,我们就能够控制创建变量或者复用已经存在(创建好)的变量。

说明:

  • 通过变量作用域,就可以避免意外创建或者共享变量。
  • 使用reuse参数来控制获取变量的行为。该参数的意义如下:
  • 默认为获取新变量,当变量已经存在时,出错。
  • tf.AUTO_REUSE 当变量不存在时,创建变量,存在时,复用已经创建的变量。
  • true 复用变量,当变量不存在时出错。
  • 底层会使用作用域名/变量名:0的方式来标记变量。

程序示例

  1. 使用Tensorflow实现一元线性回归。
    y=0.5x+0.4
  2. 使用Tensorflow实现二元线性回归。
    y=0.5x1+0.3x2+0.4


相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
2天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
关于Tensorflow!目标检测预训练模型的迁移学习
这篇文章主要介绍了使用Tensorflow进行目标检测的迁移学习过程。关于使用Tensorflow进行目标检测模型训练的实战教程,涵盖了从数据准备到模型应用的全过程,特别适合对此领域感兴趣的开发者参考。
13 3
关于Tensorflow!目标检测预训练模型的迁移学习
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
使用TensorFlow进行深度学习入门
【5月更文挑战第11天】本文引导读者入门TensorFlow深度学习,介绍TensorFlow——Google的开源机器学习框架,用于处理各种机器学习问题。内容包括TensorFlow安装(使用pip)、核心概念(张量、计算图和会话)以及构建和训练简单线性回归模型的示例。通过这个例子,读者可掌握TensorFlow的基本操作,包括定义模型、损失函数、优化器以及运行会话。
|
4天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
Python深度学习基于Tensorflow(7)视觉处理基础
Python深度学习基于Tensorflow(7)视觉处理基础
18 2
Python深度学习基于Tensorflow(7)视觉处理基础
|
4天前
|
机器学习/深度学习 算法 TensorFlow
Python深度学习基于Tensorflow(6)神经网络基础
Python深度学习基于Tensorflow(6)神经网络基础
16 2
Python深度学习基于Tensorflow(6)神经网络基础
|
4天前
|
机器学习/深度学习 算法 算法框架/工具
Python深度学习基于Tensorflow(5)机器学习基础
Python深度学习基于Tensorflow(5)机器学习基础
14 2
|
4天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python深度学习基于Tensorflow(4)Tensorflow 数据处理和数据可视化
Python深度学习基于Tensorflow(4)Tensorflow 数据处理和数据可视化
11 3
|
4天前
|
机器学习/深度学习 TensorFlow API
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
12 2
|
4天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
Python深度学习基于Tensorflow(2)Tensorflow基础
Python深度学习基于Tensorflow(2)Tensorflow基础
12 3
|
4天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
Python深度学习基于Tensorflow(1)Numpy基础
Python深度学习基于Tensorflow(1)Numpy基础
15 5
|
13天前
|
机器学习/深度学习 数据可视化 TensorFlow
【Python 机器学习专栏】使用 TensorFlow 构建深度学习模型
【4月更文挑战第30天】本文介绍了如何使用 TensorFlow 构建深度学习模型。TensorFlow 是谷歌的开源深度学习框架,具备强大计算能力和灵活编程接口。构建模型涉及数据准备、模型定义、选择损失函数和优化器、训练、评估及模型保存部署。文中以全连接神经网络为例,展示了从数据预处理到模型训练和评估的完整流程。此外,还提到了 TensorFlow 的自动微分、模型可视化和分布式训练等高级特性。通过本文,读者可掌握 TensorFlow 基本用法,为构建高效深度学习模型打下基础。