TensorFlow程序结构

Tensorflow示例程序 三个Tensorflow小程序:手写体识别、猫㺃识别、人脸识别。 立即下载

在任何计算机语言中学习的第一个程序是都是 Hello world,本教程中也将遵守这个惯例,从程序 Hello world 开始。

上一节进行 TensorFlow 安装验证的代码如下:

 


 

下面一起看一下这段简单的代码:

  1. 导入tensorflow,这将导入 TensorFlow 库,并允许使用其精彩的功能:

    import tensorflow as if

  2. 由于要打印的信息是一个常量字符串,因此使用 tf.constant:

    message = tf.constant('Welcome to the exciting world of Deep Neural Networks!')

  3. 为了执行计算图,利用 with 语句定义 Session,并使用 run 来运行:

    with tf.Session() as sess:
        print(sess.run(message).decode())

  4. 输出中包含一系列警告消息(W),具体取决于所使用的计算机和操作系统,并声明如果针对所使用的计算机进行编译,代码运行速度可能会更快:



     

  5. 如果使用 TensorFlow GPU 版本,则还会获得一系列介绍设备的提示消息(I):



     

  6. 最后是在会话中打印的信息:

    Welcome to the exciting world of Deep Neural Networks!

TensorFlow 程序解读分析

前面的代码分为以下三个主要部分:

  • 第一部分 import 模块包含代码将使用的所有库,在目前的代码中只使用 TensorFlow,其中语句 import tensorflow as tf 则允许 Python 访问 TensorFlow 所有的类、方法和符号。
  • 第二个模块包含图形定义部分...创建想要的计算图。在本例中计算图只有一个节点,tensor 常量消息由字符串“Welcome to the exciting world of Deep Neural Networks”构成。
  • 第三个模块是通过会话执行计算图,这部分使用 with 关键字创建了会话,最后在会话中执行以上计算图。


现在来解读输出。收到的警告消息提醒 TensorFlow 代码可以以更快的速度运行,这能够通过从 source 安装 TensorFlow 来实现(本章后面的章节中会提及)。收到的提示消息给出计算设备的信息。这两个消息都是无害的,如果不想看到它们,可以通过以下两行代码实现:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

以上代码用于忽略级别 2 及以下的消息(级别 1 是提示,级别 2 是警告,级别 3 是错误)。

该程序打印计算图执行的结果,计算图的执行则使用 sess.run() 语句,sess.run 求取 message 中所定义的 tensor 值;计算图执行结果输入到 print 函数,并使用 decode 方法改进,print 函数向 stdout 输出结果:

b'Welcome to the exciting world of Deep Neural Networks!'

这里的输出结果是一个字节字符串。要删除字符串引号和“b”(表示字节,byte)只保留单引号内的内容,可以使用 decode() 方法。

 

TensorFlow 与其他编程语言非常不同。

首先通过将程序分为两个独立的部分,构建任何拟创建神经网络的蓝图,包括计算图的定义及其执行。起初这对于传统程序员来说看起来很麻烦,但是正是图定义和执行的分开设计让 TensorFlow 能够多平台工作以及并行执行,TensorFlow 也因此更加强大。

计算图:是包含节点和边的网络。本节定义所有要使用的数据,也就是张量(tensor)对象(常量、变量和占位符),同时定义要执行的所有计算,即运算操作对象(Operation Object,简称 OP)。

每个节点可以有零个或多个输入,但只有一个输出。网络中的节点表示对象(张量和运算操作),边表示运算操作之间流动的张量。计算图定义神经网络的蓝图,但其中的张量还没有相关的数值。

为了构建计算图,需要定义所有要执行的常量、变量和运算操作。常量、变量和占位符将在下一节中介绍,数学运算操作将在矩阵运算章节中详细讨论。

本节将用一个简单的例子描述程序结构——通过定义并执行计算图来实现两个向量相加。

计算图的执行:使用会话对象来实现计算图的执行。会话对象封装了评估张量和操作对象的环境。这里真正实现了运算操作并将信息从网络的一层传递到另外一层。不同张量对象的值仅在会话对象中被初始化、访问和保存。在此之前张量对象只被抽象定义,在会话中才被赋予实际的意义。

具体做法

通过以下步骤定义一个计算图:

  1. 在此以两个向量相加为例给出计算图。假设有两个向量 v_1 和 v_2 将作为输入提供给 Add 操作。建立的计算图如下:

  2. 定义该图的相应代码如下所示:

     


     

  3. 然后在会话中执行这个图:

     


     

  4. 以上两行相当于下面的代码。上面的代码的优点是不必显式写出关闭会话的命令:

     


     

  5. 运行结果是显示两个向量的和:

    {3 3 8 7}

请记住,每个会话都需要使用 close() 来明确关闭,而 with 格式可以在运行结束时隐式关闭会话。

解读分析

计算图的构建非常简单。添加变量和操作,并按照逐层建立神经网络的顺序传递它们(让张量流动)。TensorFlow 还允许使用 with tf.device() 命令来使用具有不同计算图形对象的特定设备(CPU/GPU)。在例子中,计算图由三个节点组成, v_1 和 v_2 表示这两个向量,Add 是要对它们执行的操作。

接下来,为了使这个图生效,首先需要使用 tf.Session() 定义一个会话对象 sess。然后使用 Session 类中定义的 run 方法运行它,如下所示:

run(fetches,feed_dict=None,options=None,run_metadata)

运算结果的值在 fetches 中提取;在示例中,提取的张量为 v_add。run 方法将导致在每次执行该计算图的时候,都将对与 v_add 相关的张量和操作进行赋值。如果抽取的不是 v_add 而是 v_1,那么最后给出的是向量 v_1 的运行结果:

{1,2,3,4}

此外,一次可以提取一个或多个张量或操作对象,例如,如果结果抽取的是 [v_1...v_add],那么输出如下:

{array([1,2,3,4]),array([2,1,5,3]),array([3,3,8,7])}

在同一段代码中,可以有多个会话对象。

拓展阅读

你一定会问为什么必须编写这么多行的代码来完成一个简单的向量加,或者显示一条简单的消息。其实你可以利用下面这一行代码非常方便地完成这个工作:

print(tf.Session().run(tf.add(tf.constant([1,2,3,4]),tf.constant([2,1,5,3]))))

编写这种类型的代码不仅影响计算图的表达,而且当在 for 循环中重复执行相同的操作(OP)时,可能会导致占用大量内存。养成显式定义所有张量和操作对象的习惯,不仅可使代码更具可读性,还可以帮助你以更清晰的方式可视化计算图。

注意,使用 TensorBoard 可视化图形是 TensorFlow 最有用的功能之一,特别是在构建复杂的神经网络时。我们构建的计算图可以在图形对象的帮助菜单下进行查看。

如果你正在使用 Jupyter Notebook 或者 Python shell 进行编程,使用 tf.InteractiveSession 将比 tf.Session 更方便。InteractiveSession 使自己成为默认会话,因此你可以使用 eval() 直接调用运行张量对象而不用显式调用会话。下面给出一个例子:
 

多GPU时代的虚拟内存革命:CUDA VMM API的跨设备协同设计哲学 本文深入探讨了NVIDIA CUDA VMM API在多GPU系统中的虚拟内存管理革命,解决了传统Peer Access的显存碎片化和同步开销问题。通过地址-内存解耦、按需映射和精细权限控制,VMM API为分布式训练提供了高效的内存协同方案,显著提升大模型训练性能。 阅读详情

相关推荐

Mac电脑用Latex论文排版3天速成5天实战de笔记

我后悔了,这五天竞赛搞得我视力都下降了...一个冲动的决定后成为数模竞赛论文写手,3天速成+5天时间=点亮攻克latex写论文技能💡关于Overleaf我是Mac,曾经按照大部分推荐的方式用TEXshop+vs code,但是把模板导入就开始报错。跟着少之又少的适配mac的教程(此时我已知道大概是走错路了)改了配置也无效。海鲜市场找佬改了半天,佬问我:一定要用VC吗?我说,那倒也不是。于是佬推荐我overleaf,三下五除二帮我挑配了环境,美汁汁收了我30块钱。

luwanjoyce的博客 2247

python第三方库tensorflow_Tensorflow源码框架

TensorFlow 源码截止到目前为止,TensorFlow 在 【Github】 的 Contributors 已经接近900人,Fork 30000次。学习这么庞大的开源项目,首先必须要搞清楚其代码组织形式,我们先来看目录结构:Project 目录分为4个:1)tensorflow核心代码目录,图中可以看到其子目录结构,后面我们会展开讲解。2)third_party第三方库,包括:eigen...

weixin_39793105的博客 521

【阿里云大模型高级工程师ACP学习笔记】2.8 部署模型

【摘要】本文主要分享自学阿里云大模型高级工程师 ACP 认证中《2.8 部署模型》的学习笔记。详细介绍学习目标、梳理涵盖的知识点并评估其重要性和难易度,对既重要又困难的知识点进行重点分析,旨在为对阿里云大模型学习和认证感兴趣的读者提供学习思路和经验参考。

davidkorhenn的博客 2060

深度学习框架 TensorFlow:张量、自动求导机制、tf.keras模块(Model、layers、losses、optimizer、metrics)、多层感知机(即多层全连接神经网络 MLP)

日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 安装 TensorFlow2、CUDA10、cuDNN7.6.5 Anaconda3 python 3.7、TensorFlow2、CUDA10、cuDNN7.6.5 TensorFlow 2.0 环境搭建 window下安装 Keras、Tenso...

あずにゃん梓喵的博客 6511

(MIUI)小米手机录音文件深度寻踪:从系统缓存到数据目录的实战解析

本文深入解析了MIUI系统中录音文件丢失的常见原因及解决方案,包括系统升级兼容性问题、应用缓存机制异常和存储权限变动。通过实战操作指南,详细介绍了如何从系统目录、数据库层面恢复录音文件,并提供了预防措施和自动化备份方案,帮助小米手机用户有效找回重要录音数据。

weixin_42699679的博客 517

医疗数据采集:Python爬虫爬取医学文献与药品信息(2026合规与伦理版)

医疗数据采集不同于爬取新闻或房价,它直接关系到人的生命健康和法律底线。技术层面:优先使用官方 API (PubMed E-utilities, BioThings),避免解析复杂HTML。法律层面:严守“不碰隐私、不破付费、不传谣言”三条红线。伦理层面:保持对生命的敬畏,确保数据的准确性和用途的正当性。在2026年,一个优秀的医疗数据工程师,不是那个能爬取最多数据的人,而是那个能在合规框架下,利用公开数据解决真实医疗问题的人。请务必珍视您的职业生涯和法律责任,切勿以身试法。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 284

初学者Tensorflow2.0第一个程序(含源码)

小白初入门的时候还是踩了很多坑,所以以一个初学者的角度记录一下自己复现的第一个基于TensorFlow程序。由于并不是专业,可能多有不足,不过水平相近的话应该可以更好的分享经验,平时还有很多其他的工程软甲需要使用,所以使用的是Windows操作系统(小白友好)

qq_40600296的博客 3397

Allegro基本规则设置指导书之Spacing Region

当网络需要在Region中需要按照自身的规则匹配时,可以创建Region Class来匹配。Region也支持Class to Class规则,点击ok即可。Allegro基本规则设置指导书之Spacing Region。下面介绍基本规则设置指导书之Spacing Region。给创建好的Region 匹配一个规则。空白的地方创建一个Region。

weixin_54787054的博客 564

tensorflow编程实战

使用LSTM模型,处理每个评论的词向量序列,并根据评论的情感进行分类。使用train_test_split函数将数据集分为训练集和测试集,并使用fit函数训练模型。定义输入层、编码层、解码层和输出层,并使用Adadelta优化器和二元交叉熵损失函数编译自编码器模型。最后,使用自编码器模型重建测试集图像,并可视化原始图像和重建的图像。下列代码中,首先生成了一组训练数据,然后定义了一个线性回归模型,并使用梯度下降优化器来最小化损失函数。最后,使用训练好的模型对测试数据进行预测,并可视化结果。

qq_52331221的博客 833

Android 14.0 开机广播接收慢广播延迟问题分析

在14.0的系统rom定制化开发中,在某些时候在接收开机广播的时候发现,过了一分钟才收到开机广播,接下来就需要分析下 开机广播的相关分发机制,来处理下相关问题

安卓兼职framework和app工程师的博客 629

Flow Matching05:概率路径与插值【概率路径:线性插值路径(最简单)、高斯插值路径】【先尝试线性插值,看效果如何;若不够好,尝试高斯插值】

好的,我将从数学角度详细解释Flow Matching,从高中生能理解的基础知识开始,逐步深入到高级概念。

u013250861的博客 173

Tensorflow Keras实战教程

1. 结合程序实例全面详细介绍Tensorflow Keras编程的结构、模型流程、要素及重要的模型进阶技术点,由浅入深教会学员用Keras进行深度学习编程2. 结合程序实例讲解大多数深度学习实用模型的用法及要点,包括CNN(LeNet,AlexNet,VGGNet, InceptionNet,ResNet等)、RNN、LSTM、AutoEncoder自编码器、生成对抗网络GAN、增强学习、迁移学习、自然语言处理NLP等,使学员掌握绝大多数常用实用的深度学习模型并能用Keras对其编程3. 结合实践场景中的行业综合实例,将Keras对系列实际问题的解决,用程序代码进行讲解,使学员能够将模型与编程方法真正与工作实践紧密结合,并在工作中直接使用解决问题

uniapp [微信小程序] - 详解微信小程序端接入mqtt全流程及示例源码教程,uniApp微信小程序端如何接入MQTT插件并实现连接/断开+发布订阅+消息队列+离线重连等各种示例代码(开箱即用)

uniapp微信小程序接入MQTT,uniapp中使用mqtt,uniapp 微信小程序端接入mqtt示例代码教程,适用于微信小程序的MQTT插件,uniapp开发微信小程序连接mqtt,uniApp微信小程序接入MQTT协议,uniapp vue3微信小程序使用MQTT的小例子接入流程,使用uniapp开发小程序接入mqtt,如何在uniapp项目中使用mqtt,uniapp mqtt的使用示例,mqtt连接报错,如何在项目里集成mqtt,Mqtt协议,主动连接mqtt,订阅消息,实现发布,订阅和接收消息

🏆 前端领域优质创作者 2881

tensorflow程序结构

TensorFlow 支持以下三种类型的张量: 常量:常量是其值不能改变的张量。 变量:当一个量在会话中的值需要更新时,使用变量来表示。例如,在神经网络中,权重需要在训练期间更新,可以通过将权重声明为变量来实现。变量在使用前需要被显示初始化。另外需要注意的是,常量存储在计算图的定义中,每次加载图时都会加载相关变量。换句话说,它们是占用内存的。另一方面,变量又是分开存储的。它们可以存储在参数服务器上。 占位符:用于将值输入 TensorFlow 图中。它们可以和 feed_dict 一起使用来输入数据。在训

Demi Hao的学习笔记 372

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

TensorFlow学习心得(1):入门概念与程序结构

相信很多朋友入门机器学习使用的第一个框架就是TensorFlow了,但是很多小白(比如作者)对于TF的认识还停留在TFboys的阶段。那么我们今天就来简单地了解一下TensorFlow的概念和程序结构。 1. Tensor 首先我们来看看什么是Tensor。在官网的文档中,Tensor被翻译成”张量“,它的定义如下: 张量是对矢量和矩阵向潜在的更高维度的泛化,TensorFlow 在内部将张量表...

qq_44584356的博客 664

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TensorFlow02.程序结构

程序结构 tensorflow程序一般分为两个阶段: 阶段1:定义计算图所有的计算。 阶段2:在session中执行计算。 阶段1 计算图(Computational Graph) 在理解计算图之前,先理解张量(Tensor)和流(Flow): Tensor:在TensorFlow的范畴内,可以简单理解成多维数组。详细理解: https://www.cnblogs.com/abella/p/...

重点记录机器人和自动驾驶相关领域的技术,尤其是计算机视觉,视觉SLAM等,不仅有前言文献或必备算法的学习,也会有实际应用的点滴经验 301

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

人工智能之Tensorflow程序结构

Tensorflow程序机构,运行顺序

WEL测试 779

python的程序结构_TensorFlow程序结构(深度剖析)

TensorFlow 与其他编程语言非常不同。首先通过将程序分为两个独立的部分,构建任何拟创建神经网络的蓝图,包括计算图的定义及其执行。起初这对于传统程序员来说看起来很麻烦,但是正是图定义和执行的分开设计让 TensorFlow 能够多平台工作以及并行执行,TensorFlow 也因此更加强大。计算图:是包含节点和边的网络。本节定义所有要使用的数据,也就是张量(tensor)对象(常量、变量和占位...

weixin_33838310的博客 234

tensorflow缩小总字节变量_TensorFlow学习Program1——1.第一个程序helloworld案例+2.TF程序结构...

本学习Program整理总结自C语言中文网,这是我学习tensorflow的第一个完整参考内容,内容很详细,教学逻辑也比较好。本整理,加入了个人的理解和标注。跳过了安装和下载等内容,安装和下载见我的其他帖子。1 第一个程序案例hello world在任何计算机语言中学习的第一个程序是都是 Hello world,本教程中也将遵守这个惯例,从程序 Hello world 开始。上一节进行Tensor...

weixin_28979339的博客 141

TensorFlow程序结构(深度剖析)学习笔记

此博客只是学习笔记,不具有任何参考价值 TensorFlow 将程序分为两个独立的部分来构建神经网络的蓝图 计算图的定义 计算图定义神经网络的蓝图,但其中的张量还没有相关的数值, 为了构建计算图,需要定义所有要执行的常量、变量和运算操作 计算图的执行 使用会话对象来实现计算图的执行。会话对象封装了评估张量和操作对象的环境。 这里真正实现了运算操作并将信息从网络...

m0_50636760的博客 315

莫烦TensorFlow_01 基本程序结构

import tensorflow as tf import numpy as np # create data x_data = np.random.rand(100).astype(np.float32) y_data = x_data*0.1 + 0.3 ### create tensorflow structure start #...

weixin_30398227的博客 78

Tensorflow学习笔记-第二节程序结构

TensorFlow程序分为两个独立的部分: 1. 构建任何拟创建神经网络的蓝图 2. 计算图的定义及其执行 计算图: 计算图是包含节点和边的网络。本节定义所有要使用的数据,也就是张量(tensor)对象(常量、变量和占位符),同时定义要执行的所有计算,即运算操作对象(Operation Object,简称 OP)。 每个节点可以有零个或多个输入,但只有一个输出。网络中的节点表示对象(张量和运算操...

TI__boyue的博客 339

tensorflow with语句_TensorFlow学习Program1——1.第一个程序helloworld案例+2.TF程序结构...

本学习Program整理总结自C语言中文网,这是我学习tensorflow的第一个完整参考内容,内容很详细,教学逻辑也比较好。本整理,加入了个人的理解和标注。跳过了安装和下载等内容,安装和下载见我的其他帖子。1 第一个程序案例hello world在任何计算机语言中学习的第一个程序是都是 Hello world,本教程中也将遵守这个惯例,从程序 Hello world 开始。上一节进行Tensor...

weixin_39936403的博客 298

【TensorFlow】张量对象,变量空间variable_scope,矩阵基本操作

TensorFlow为深度神经网络(DNN)开发的功能强大的开源软件库。 安装:基于Anaconda 安装 TensorFlow 安装Tensorflow windows10 其中报错:解决Anaconda出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url问题

一亿少女的梦 660

深度学习之TensorFlow(二)

TensorFlow基本语法1.安装验证代码2.程序结构3.矩阵操作 1.安装验证代码 # 允许 Python 访问 TensorFlow 所有的类、方法和符号 import tensorflow as tf import os # 忽略级别 2 及以下的消息(级别 1 是提示,级别 2 是警告,级别 3 是错误) os.environ['TF_CPP_MIN_LOG_LEVEL']='2' # ...

qq_45416295的博客 770
上一篇: TensorFlow安装和下载
下一篇: 人脸识别(Facenet)
linux_win
博客等级 码龄8年 4粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值