瞎聊深度学习——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的其他用法。

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
1天前
|
机器学习/深度学习 人工智能 算法
【服装识别系统】图像识别+Python+人工智能+深度学习+算法模型+TensorFlow
服装识别系统,本系统作为图像识别方面的一个典型应用,使用Python作为主要编程语言,并通过TensorFlow搭建ResNet50卷积神经算法网络模型,通过对18种不同的服装('黑色连衣裙', '黑色衬衫', '黑色鞋子', '黑色短裤', '蓝色连衣裙', '蓝色衬衫', '蓝色鞋子', '蓝色短裤', '棕色鞋子', '棕色短裤', '绿色衬衫', '绿色鞋子', '绿色短裤', '红色连衣裙', '红色鞋子', '白色连衣裙', '白色鞋子', '白色短裤')数据集进行训练,最后得到一个识别精度较高的H5格式模型文件,然后基于Django搭建Web网页端可视化操作界面,实现用户在界面中
9 1
【服装识别系统】图像识别+Python+人工智能+深度学习+算法模型+TensorFlow
|
2天前
|
机器学习/深度学习 算法 自动驾驶
深度学习在图像识别中的应用与挑战
【7月更文挑战第3天】 本文深入探讨了深度学习技术在图像识别领域内的应用及其所面临的挑战。首先,文章概述了深度学习如何革新了图像处理的范式,接着详细讨论了卷积神经网络(CNN)在图像分类、目标检测及语义分割中的具体应用。然后转向挑战部分,分析了数据集偏差、模型泛化能力以及对抗性攻击等问题。最后,文章提出了未来研究方向,包括算法优化、跨域适应性学习以及隐私保护等议题。
|
23小时前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习在自然语言处理中的应用与挑战
本文深入探讨了深度学习技术在自然语言处理领域的应用及其面临的挑战。通过分析最新的研究成果和实际案例,揭示了深度学习如何革新传统NLP任务,包括语言模型、机器翻译、情感分析和文本分类等。同时,文章也指出了深度学习在处理语义理解、数据偏差和模型泛化能力方面的局限性,并提出了未来研究的可能方向。
|
1天前
|
机器学习/深度学习 人工智能 监控
深度学习在图像识别中的应用与挑战
深度学习技术已成为现代计算机视觉领域的革命性力量。本文旨在深入解析深度学习如何革新了图像识别领域,并探讨了其面临的主要挑战和未来的发展方向。通过引用最新的研究成果和实验数据,本文不仅揭示了深度学习模型在处理复杂图像任务中的优势,同时也指出了数据偏差、模型泛化能力和计算资源消耗等问题。此外,文章还探讨了深度学习技术如何促进自动化图像分析的实际应用,以及这些应用对社会的潜在影响。
8 0
|
1天前
|
机器学习/深度学习 自然语言处理 算法
深度学习在医疗诊断中的应用与挑战
随着人工智能技术的飞速发展,深度学习已在多个领域展现出其强大的能力,尤其是在医疗诊断领域。本文旨在探讨深度学习技术如何助力医疗诊断,提升疾病识别的准确性和效率。通过分析深度学习在图像识别、病理分析等方面的应用案例,揭示其在处理大数据、复杂模式识别中的优势。同时,本文也将指出深度学习在医疗领域中面临的挑战,包括数据隐私问题、算法的可解释性以及跨领域合作的必要性。文章将基于最新的科研研究和统计数据,提供一个科学严谨、逻辑严密的视角,深入解读深度学习在医疗诊断领域的应用前景及所面临的挑战。
8 0
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用与挑战
在人工智能领域,深度学习技术已成为推动自然语言处理(NLP)进步的关键力量。本文将深入探讨深度学习如何革新NLP领域,包括语音识别、机器翻译、情感分析等方面的应用,并讨论当前面临的主要挑战,如数据偏差和模型解释性问题。通过引用最新的研究成果和实例分析,本文旨在为读者提供深度学习在NLP中应用的全面视角,同时指出未来的研究方向。
|
1天前
|
机器学习/深度学习 算法 计算机视觉
探索深度学习在图像识别中的应用与挑战
【7月更文挑战第4天】本文深入探讨了深度学习技术在图像识别领域的应用,并分析了其面临的主要挑战。通过介绍深度学习的基础原理和关键技术,我们揭示了其在图像处理任务中的强大能力,包括特征提取、对象检测和分类。同时,文章也指出了深度学习模型在泛化能力、数据依赖性以及计算资源需求方面存在的问题,并提出了可能的解决策略,旨在为未来图像识别技术的发展提供参考。
|
2天前
|
机器学习/深度学习 自然语言处理 测试技术
深度学习在自然语言处理中的应用与挑战
本文深入探讨了深度学习技术在自然语言处理(NLP)领域的应用及其所面临的挑战。通过分析最新的研究数据和实验结果,文章揭示了深度学习模型如循环神经网络(RNN)、长短时记忆网络(LSTM)和Transformer架构在文本分类、机器翻译、情感分析等任务中的卓越表现。同时,讨论了深度学习在处理语言多样性、语境理解不足以及数据偏差等问题上的挑战,并提出了可能的解决方案。本文旨在为NLP领域的研究者和实践者提供深度学习技术的全面视角,促进其在实际应用中的创新与发展。
|
2天前
|
机器学习/深度学习 自然语言处理 算法
深度学习在自然语言处理中的应用与挑战
随着人工智能技术的飞速发展,深度学习已成为自然语言处理领域的核心技术之一。本文将深入探讨深度学习在自然语言处理中的应用及其面临的挑战。首先,我们将介绍深度学习的基本概念和关键技术;然后,我们将分析深度学习在自然语言处理中的应用领域,如语音识别、机器翻译和情感分析等;最后,我们将讨论深度学习在自然语言处理中面临的挑战,包括数据稀疏性、模型可解释性和跨领域适应性等问题。通过本文的研究,我们希望为深度学习在自然语言处理领域的进一步发展提供有益的启示。
9 0
|
2天前
|
机器学习/深度学习 算法 数据安全/隐私保护
深度学习在医疗影像分析中的应用与挑战
随着人工智能技术的飞速发展,深度学习已成为医疗影像分析领域的革命性工具。本文将深入探讨深度学习技术在医疗影像分析中的具体应用,包括疾病诊断、治疗规划和预后评估等方面。同时,也将分析当前面临的主要挑战,如数据隐私保护、算法透明度和跨域泛化能力等。通过引用最新的科研研究和权威统计数据,本文旨在提供一个科学严谨、逻辑严密的视角,以理解深度学习在医疗影像分析中的潜力与局限。
11 0