AI常用框架和工具丨9. 深度学习框架TensorFlow

本文介绍了深度学习框架TensorFlow,包括其环境配置、发展历程、主要特点和架构。讲解了TensorFlow的基础知识,如张量、算子、会话和变量的概念,并提供了神经网络搭建的流程和代码实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深度学习框架TensorFlow,AI常用框架和工具之一。理论知识结合代码实例,希望对您有所帮助。

在这里插入图片描述

环境说明

操作系统:Windows 10

CUDA 版本为: 10.0

cudnn 版本为: 7.6.5

Python 版本为:Python 3.6.13

tensorflow-gpu 版本为:1.13.1

注意CUDA、cudnn、Python、tensorflow版本之间的匹配

一、TensorFlow简介

1.1 TensorFlow是什么?

TensorFlow 是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用。

  • 轻松地构建模型:在即刻执行环境中使用 Keras 等直观的高阶 API 轻松地构建和训练机器学习模型,该环境使我们能够快速迭代模型并轻松地调试模型。
  • 随时随地进行可靠的机器学习生产:无论您使用哪种语言,都可以在云端、本地、浏览器中或设备上轻松地训练和部署模型。
  • 强大的研究实验:一个简单而灵活的架构,可以更快地将新想法从概念转化为代码,然后创建出先进的模型,并最终对外发布。

1.2 TensorFlow发展过程

2015年9月0.1    ⟹    \implies 2017年2月1.0    ⟹    \implies 2019年3月2.0

1.3 TensorFlow特点

  • 灵活可扩展:TensorFlow 不是一个严格的“神经网络”库。只要你可以将你的计算表示为一个数据流图,你就可以使用Tensorflow。你来构建图,描写驱动计算的内部循环。我们提供了有用的工具来帮助你组装“子图”(常用于神经网络),当然用户也可以自己在Tensorflow基础上写自己的“上层库”。定义顺手好用的新复合操作和写一个python函数一样容易,而且也不用担心性能损耗。当然万一你发现找不到想要的底层数据操作,你也可以自己写一点c++代码来丰富底层的操作。
  • 多语言:Tensorflow 有一个合理的c++使用界面,也有一个易用的python使用界面来构建和执行你的graphs。你可以直接写python/c++程序,也可以用交互式的ipython界面来用Tensorflow尝试些想法,它可以帮你将笔记、代码、可视化等有条理地归置好。当然这仅仅是个起点——我们希望能鼓励你创造自己最喜欢的语言界面,比如Go,Java,Lua,Javascript,或者是R。
  • GPU:支持 GPU。
  • 多平台:Tensorflow 在CPU和GPU上运行,比如说可以运行在台式机、服务器、手机移动设备等等。
  • 运算能力强:由于Tensorflow 给予了线程、队列、异步操作等以最佳的支持,Tensorflow 让你可以将你手边硬件的计算潜能全部发挥出来。你可以自由地将Tensorflow图中的计算元素分配到不同设备上,Tensorflow可以帮你管理好这些不同副本。
  • 分布式:Tensorflow是由高性能的gRPC框架作为底层技术来支持的。这是一个通信框架gRPC(google remote procedure call),是一个高性能、跨平台的RPC框架。

1.4 TensorFlow架构

在这里插入图片描述

▲ 架构图

二、TensorFlow基础知识

2.1 TensorFlow组成

在这里插入图片描述

▲ Tensor + Flow

2.2 TensorFlow计算过程

在这里插入图片描述

▲ 计算图实例

2.3 TensorFlow基本概念

  • 张量(tensor):即任意维度的数据,一维、二维、三维、四维等数据统称为张量。
  • 算子(operation):在TF的实现中,机器学习算法被表达成图,图中的节点是算子(operation),节点会有0到多个输出。
  • 会话(Session):客户端使用会话来和TF系统交互,一般的模式是,建立会话,此时会生成一张空图;在会话中添加节点和边,形成一张图,然后执行。
  • 变量(Variables):机器学习算法都会有参数,而参数的状态是需要保存的。而参数是在图中有其固定的位置的,不能像普通数据那样正常流动。因而,TF中将Variables实现为一个特殊的算子,该算子会返回它所保存的可变tensor的句柄。
  • 核(kernel):kernel是operation在某种设备上的具体实现。TF的库通过注册机制来定义op和kernel,所以可以通过链接一个其他的库来进行kernel和op的扩展。
  • 边(edge):正常边,正常边上可以流动数据,即正常边就是tensor。特殊边,又称作控制依赖,(control dependencies)。

三、TensorFlow搭建神经网络

3.1 TensorFlow开发流程

在这里插入图片描述

▲ 开发流程图

3.2 TensorFlow神经网络搭建

网络函数方法
全连接网络tf.layers.dense
CNN卷积神经网络tf.layers.conv2d
tf.layers.max_pooling2d
RNN循环神经网络tf.nn.rnn_cell.BasicRNNCell
其他tf.contrib.rnn.BasicLSTMCell
tf.contrib.rnn.GRUCell

四、代码实例

4.1 打印出 Hello tensorflow

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()      # 建立一个session
print (sess.run(hello))  # 通过session里面的run来运行结果
sess.close()

运行结果:

b'Hello, TensorFlow!'

4.2 基本运算

a = tf.constant(3)  # 定义常量3
b = tf.constant(4)  # 定义常量4

with tf.Session() as sess:  # 建立session
    print("相加: %i" % sess.run(a + b))  # 计算输出两个变量相加的值
    print("相乘: %i" % sess.run(a * b))  # 计算输出两个变量相乘的值

运行结果
在这里插入图片描述

4.3 定义变量

# 定义变量
var1 = tf.Variable(10.0, name="varname")
var2 = tf.Variable(11.0, name="varname")
var3 = tf.Variable(12.0)
var4 = tf.Variable(13.0)
with tf.variable_scope("test1"):
    var5 = tf.get_variable("varname", shape=[2], dtype=tf.float32)

with tf.variable_scope("test2"):
    var6 = tf.get_variable("varname", shape=[2], dtype=tf.float32)

print("var1:", var1.name)
print("var2:", var2.name)
print("var3:", var3.name)
print("var4:", var4.name)
print("var5:", var5.name)
print("var6:", var6.name)

运行结果:

在这里插入图片描述

参考文献

  • [1] https://education.huaweicloud.com/courses/course-v1:HuaweiX+CBUCNXE081+Self-paced/about
  • [2] https://tensorflow.google.cn/
  • [3] https://www.21ic.com/article/827995.html
  • [4] https://blog.csdn.net/DAN_L/article/details/106929907
  • [5] https://blog.csdn.net/qq_42635142/article/details/100567418
—— END ——

如果以上内容有任何错误或者不准确的地方,欢迎在下面 👇 留言。或者你有更好的想法,欢迎一起交流学习~~~

更多精彩内容请前往 AXYZdong的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AXYZdong

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值