深度学习入门笔记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


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
29天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
257 55
|
2月前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
2月前
|
机器学习/深度学习 数据采集 人工智能
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】随着人工智能的发展,深度学习技术正逐步应用于教育领域,特别是个性化学习系统中。通过分析学生的学习数据,深度学习模型能够精准预测学生的学习表现,并为其推荐合适的学习资源和规划学习路径,从而提供更加高效、有趣和个性化的学习体验。
186 9
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
84 3
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤
本文介绍了 TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤,包括数据准备、模型定义、损失函数与优化器选择、模型训练与评估、模型保存与部署,并展示了构建全连接神经网络的具体示例。此外,还探讨了 TensorFlow 的高级特性,如自动微分、模型可视化和分布式训练,以及其在未来的发展前景。
164 5
|
2月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
2月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
100 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
2月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
116 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
120 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 人工智能 TensorFlow
基于TensorFlow的深度学习模型训练与优化实战
基于TensorFlow的深度学习模型训练与优化实战
118 0