深度学习入门笔记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盲盒。
相关文章
|
3天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
16天前
|
机器学习/深度学习 数据采集 人工智能
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】随着人工智能的发展,深度学习技术正逐步应用于教育领域,特别是个性化学习系统中。通过分析学生的学习数据,深度学习模型能够精准预测学生的学习表现,并为其推荐合适的学习资源和规划学习路径,从而提供更加高效、有趣和个性化的学习体验。
73 9
|
4天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
21 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
4天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
18 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
4天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
20 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
20天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
16天前
|
安全 搜索推荐 机器学习/深度学习
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】在人工智能的推动下,个性化学习系统逐渐成为教育领域的重要趋势。深度学习作为AI的核心技术,在构建个性化学习系统中发挥关键作用。本文探讨了深度学习在个性化推荐系统、智能辅导系统和学习行为分析中的应用,并提供了代码示例,展示了如何使用Keras构建模型预测学生对课程的兴趣。尽管面临数据隐私和模型可解释性等挑战,深度学习仍有望为教育带来更个性化和高效的学习体验。
44 0
|
7天前
|
机器学习/深度学习 人工智能 测试技术
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术,尤其是卷积神经网络(CNN)在图像识别任务中的最新进展和面临的主要挑战。通过分析不同的网络架构、训练技巧以及优化策略,文章旨在提供一个全面的概览,帮助研究人员和实践者更好地理解和应用这些技术。
36 9
|
3天前
|
机器学习/深度学习 人工智能 算法
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术在图像识别领域的应用,重点分析了卷积神经网络(CNN)的工作原理及其在处理图像数据方面的优势。通过案例研究,展示了深度学习如何提高图像识别的准确性和效率。同时,文章也讨论了当前面临的主要挑战,包括数据不足、过拟合问题以及计算资源的需求,并提出了相应的解决策略。
|
4天前
|
机器学习/深度学习 分布式计算 并行计算
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习技术在图像识别领域的应用,分析了当前主流的卷积神经网络(CNN)架构,并讨论了在实际应用中遇到的挑战和可能的解决方案。通过对比研究,揭示了不同网络结构对识别准确率的影响,并提出了优化策略。此外,文章还探讨了深度学习模型在处理大规模数据集时的性能瓶颈,以及如何通过硬件加速和算法改进来提升效率。

热门文章

最新文章