瞎聊深度学习——TensorFlow的基本应用

简介: 瞎聊深度学习——TensorFlow的基本应用

首先来说一下TensorFlow的几个关键词:

图(graph)、会话、张量(tensor)、变量(Variable)、feed、fetch。

说一下上面关键词的作用:


  • 用图(graph)来表示计算任务
  • 在被称之为会话(Session)的上下文(context)中执行图
  • 使用tensor表示数据
  • 通过变量(Variable)维护状态
  • 用feed和fetch可以为任意操作赋值或者从中获取数据


张量(tensor)是什么?

我们可以把张量认作是基于向量和矩阵的推广,举几个实例来表示一下N阶标量都代表什么:

image.png

Tensorflow中用图来表示计算任务,图中的每个节点我们叫它OP,并且每一个OP都可以获得0个以上的tensor,然后执行计算后产生0个或多个tensor;而在计算图的时候为了能够进行计算,必须在会话(session)中启动图,session会将图上的OP分配到CPU、GPU等设备上(我们无需具体的定义使用CPU还是GPU,如果检测到GPU,TensorFlow会用检测到的第一个GPU来执行),同时提供执行OP的方法,执行完成后再将OP返回。


下面用具体的操作来讲解一下每一步的实际应用。


构建并启动图

先上一段代码看一下

import tensorflow as tf
# 此处用来定义OP中的张量
matrix1 = tf.constant([[1, 2, 3]])
matrix2 = tf.constant([[4], [5], [6]])
# 矩阵相乘(执行OP的方法)
Matrix = tf.matmul(matrix1, matrix2)
# 启动默认图(计算图时一定要先启动默认图)
sess = tf.Session()
# 想要执行我们所定义的执行OP的方法,要调用sess中的run函数,返回的是一个numpy `ndarray` 对象
re = sess.run(Matrix)
# 会话完成后要close以释放资源
sess.close()
print(re)

运行结果

image.png

说明:

这是一段简单的使用TensorFlow计算常量矩阵相乘的代码,在TensorFlow中我们可以使用constant来创建常量OP,需要注意的是在执行OP的时候一定要先启动默认图:session = tf.Session() ,然后使用session.run()执行即可,使用session的run函数的时候就像是我们在使用一种编译器的时候进行编译执行一样。


另一种执行方法:

with tf.Session() as sess:
    re = sess.run(Matrix)
    print(re)

这样做的好处是我们无需再使用close释放资源,在with执行完后会自动进行close操作。


GPU

如果电脑上右多个可用的GPU我们可以用如下的语句来选择GPU

with tf.device("/gpu:1"):
    ......

可以使用:

"/cpu:0" 表示使用第一个cpu

"/gpu:0" 表示使用第一个gpu

以此类推


变量(variable)

变量用来维护图执行过程中的状态信息,例如在神经网络总用于保存和更新神经网络上的参数。

举一个常见的例子,用变量来实现一个计数器,通过assign函数不断的给变量count赋计数后的值即可。

import tensorflow as tf
count = tf.Variable(0)
add = tf.constant(1)
add_one = tf.add(count, add)
# assign函数用于复制操作
update = tf.assign(count, add_one)
# init用于在session中让变量初始化
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for i in range(5):
        result = sess.run(update)
        print(result)

运行结果如下:

20.png

Feed和Fetch

Feed主要用于临时替换一个操作的输出结果,我们可以提供feed数据作为run()函数调用的参数,feed只在方法内有效,结束后feed就会消失,常见的一种形式是我们用tf.placeholder()来创建占位符,方便于feed在run()内的赋值。举例如下:

import tensorflow as tf
matrix1 = tf.placeholder(dtype=tf.float32)
matrix2 = tf.placeholder(dtype=tf.float32)
Matrix = tf.multiply(matrix1,matrix2)
with tf.Session() as sess:
    re = sess.run([Matrix],feed_dict={matrix1: [1.2], matrix2: [2.2]})
    print(re)

结果:

image.png

要注意一下multiply实现的是元素级别的相乘,两个相乘的数一定要有相同的数据类型,而matmul是矩阵相乘。

在之前的run()操作中,我们每次只返回了一个OP操作的值,Fetch一个可以返回多个OP值得属性。

import tensorflow as tf
num1 = tf.constant(3)
num2 = tf.constant(4)
num3 = tf.constant(5)
count1 = tf.add(num1, num2)
count2 = tf.add(count1, num3)
with tf.Session() as sess:
    re = sess.run([count1, count2])
    print(re)

结果如下:

22.png

以上就是对TensorFlow的一些基本操作和性质的解释和示例,后续还会更深一步的学习tf的其他用法。

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
机器学习/深度学习 运维 安全
深度学习在安全事件检测中的应用:守护数字世界的利器
深度学习在安全事件检测中的应用:守护数字世界的利器
512 22
|
11月前
|
机器学习/深度学习 编解码 人工智能
计算机视觉五大技术——深度学习在图像处理中的应用
深度学习利用多层神经网络实现人工智能,计算机视觉是其重要应用之一。图像分类通过卷积神经网络(CNN)判断图片类别,如“猫”或“狗”。目标检测不仅识别物体,还确定其位置,R-CNN系列模型逐步优化检测速度与精度。语义分割对图像每个像素分类,FCN开创像素级分类范式,DeepLab等进一步提升细节表现。实例分割结合目标检测与语义分割,Mask R-CNN实现精准实例区分。关键点检测用于人体姿态估计、人脸特征识别等,OpenPose和HRNet等技术推动该领域发展。这些方法在效率与准确性上不断进步,广泛应用于实际场景。
1359 64
计算机视觉五大技术——深度学习在图像处理中的应用
|
机器学习/深度学习 人工智能 运维
深度学习在流量监控中的革命性应用
深度学习在流量监控中的革命性应用
472 40
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
688 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
1231 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
11月前
|
机器学习/深度学习 数据采集 存储
深度学习在DOM解析中的应用:自动识别页面关键内容区块
本文探讨了如何通过深度学习模型优化东方财富吧财经新闻爬虫的性能。针对网络请求、DOM解析与模型推理等瓶颈,采用代理复用、批量推理、多线程并发及模型量化等策略,将单页耗时从5秒优化至2秒,提升60%以上。代码示例涵盖代理配置、TFLite模型加载、批量预测及多线程抓取,确保高效稳定运行,为大规模数据采集提供参考。
314 0
|
机器学习/深度学习 运维 资源调度
深度学习在资源利用率优化中的应用:让服务器更聪明
深度学习在资源利用率优化中的应用:让服务器更聪明
610 6
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的原理与应用:开启智能时代的大门
深度学习的原理与应用:开启智能时代的大门
821 16
|
机器学习/深度学习 网络架构 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过研究卷积神经网络(CNN)的结构和原理,本文展示了深度学习如何提高图像识别的准确性和效率。同时,本文也讨论了数据不平衡、过拟合、计算资源限制等问题,并提出了相应的解决策略。
421 19
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
1155 0