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

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统