TensorFlow入门(一)——理论知识介绍及简单代码实现

2024-06-13 02:48

本文主要是介绍TensorFlow入门(一)——理论知识介绍及简单代码实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TensorFlow入门(一)——理论知识介绍及简单代码实现

  • 一、TensorFlow安装
  • 二、TensorFlow计算模型——计算图(Graph)
    • 概念
    • 属性
  • 三、TensorFlow数据模型——张量(Tensor)
    • 概念
    • 属性
      • 名字——name
      • 维度——shape
      • 类型——type
    • 查看Tensor具体内容
  • 四、Tensorflow运行模型——会话(Session)
    • 概念
    • 使用步骤
      • 方式一(不推荐)
      • 方式二(推荐)
  • 五、完整代码展示

tf是tensorflow的简写,在编程时注意使用import tensorflow as tf,为了方便,以后所有的tf都表示tensorflow

一、TensorFlow安装

此处不再赘述,请参考本人博客,见下面链接
https://blog.csdn.net/u011609063/article/details/84188942

二、TensorFlow计算模型——计算图(Graph)

概念

在这里插入图片描述
该图中每一个节点都是一个运算,每条边代表了计算之间的依赖关系。a和b不依赖其它计算,而add计算依赖a和b,因此有一条a到add和b到add的边。没有任何计算依赖add的结果,所以代表加法的add节点没有指向任何其它节点的边。这种组织方式就是计算图。
注意:不同计算图中的Tensor(张量)不会共享

属性

在计算图中,可以通过集合(collection)来管理不同类别的资源。
例如:
tf.add_to_collection函数可以加入一个或者多个资源到集合中
tf.get_collection函数获取一个集合中所有资源。可以是张量、变量或者运行中队列的资源
TensorFlow中常用集合

集合名称集合内容使用场景
tf.GraphKeys.VARIABLES所有变量持久化TensorFlow模型
tf.GraphKeys.TRAIN_VARIABLES可学习的变量(一般指神经网络中的参数)模型训练、生成模型可视化内容
tf.GraphKeys.SUMMARIES日志生成相关的张量TensorFlow计算可视化
tf.GraphKeys.QUEUE_RUNNERS处理输入的QueueRunner输入处理
tf.GraphKeys.MOVING_AVERAGE_VARIABLES所有计算了滑动平均值的变量计算变量的滑动平均值

三、TensorFlow数据模型——张量(Tensor)

概念

Tensor是TensorFlow中管理数据的形式,所有的数据都通过Tensor的形式表示。
Tensor可以被理解为多维数组,其中
零阶Tensor表示标量(scalar),即一个数
一阶Tensor为向量(vector),即一维数组
n阶Tensor可被理解为n阶数组
Tensor中并没有真正保存数据,它保存的是如何得到这些数字的计算过程的应用,因此无法直接通过print输出结果

属性

下图是通过print函数直接输出的Tensor的结果
在这里插入图片描述

  1. 名字——name

    张量的命名可以通过"node:src_output"表示,其中node为节点名称,src_output表示来自节点的第几个输出。在该图中"add:0"说明了result这个张量是计算节点"add"输出的第一个结果(编号从0开始)

  2. 维度——shape

    该属性描述了Tensor的维度信息,shape=(2, )说明是一个一维数组,长度为2

  3. 类型——type

    每个Tensor都会有唯一的一个类型,当类型不匹配时会报错,例如:

    a = tf.constant([1, 2], name="a")
    b = tf.constant([1.0, 2.0], name="b")
    result = a + b
    

    运行这段代码就会报错,报错具体信息可以自行尝试

查看Tensor具体内容

with tf.Session() as sess:# method 1print("result: {}".format(sess.run(tensor_name)))# method 2print("result: {}".format(tensor_name.eval()))

四、Tensorflow运行模型——会话(Session)

概念

主要是用来执行定义好的运算。会话拥有并管理TensorFlow程序运行时的所哟资源。当计算完成时帮助系统回收资源,否则的话会出现资源泄露的情况。

使用步骤

方式一(不推荐)

  1. 创建——sess = tf.Session()
  2. 使用——sess.run(…)
  3. 关闭——sess.close()

方式二(推荐)

使用该方式无需手动关闭,推荐该方式,因为上述方式当发生异常时,不一定能关闭会话,从而造成资源泄露

with tf.Session() as sess:sess.run(...)

五、完整代码展示

"""
This scripts shows how to generate a new graph and
how to define and use variables in different graph.
Note that:Tensor and Computation in different graphs won't shared with each other
"""
import tensorflow as tfg1 = tf.Graph()
with g1.as_default():# define variable "v" and make it equal to 0 in graph g1v = tf.get_variable("v", shape=[2, 3], initializer=tf.zeros_initializer())g2 = tf.Graph()
with g2.as_default():# define variable "v" and make it equal to 1 in graph g2v = tf.get_variable("v", shape=[3, 2], initializer=tf.ones_initializer())# read the v's value in g1
with tf.Session(graph=g1) as sess:tf.global_variables_initializer().run()with tf.variable_scope("", reuse=True):print("g1_v: {}".format(sess.run(tf.get_variable("v"))))# read the v's value in g2
with tf.Session(graph=g2) as sess:tf.global_variables_initializer().run()with tf.variable_scope("", reuse=True):print("g2_v: {}".format(sess.run(tf.get_variable("v"))))g = tf.Graph()a = tf.constant([1, 2], name="a", dtype=tf.float32)
b = tf.constant([1.0, 2.0], name="b")
result = tf.add(a, b, name="add")# specify the device to run
with g.device("/cpu:0"):with tf.Session() as sess:print("result: {}".format(result.eval()))

写博客不易,转载请注明原出处

这篇关于TensorFlow入门(一)——理论知识介绍及简单代码实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056070

相关文章

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.