Tensorflow基本概念

news/2024/11/16 18:48:37 标签: tensorflow, 人工智能

在这里插入图片描述
简介:本文从Graph讲到Session,同时讲解了tf.constant创建tensor的用法和variable需要初始化的知识点,可以给你打好一个学习Tensorflow的基础。本文都是基于TensorFlow1.14.0的版本下运行。
本专栏将会系统的讲解TensorFlow在1.14.0版本下的各种用法并且会讲解各种常用的神经网络模型,希望能给大家带来一定的帮助,我也需要大家的关注

Tensorflow基本概念

    • 1.1使用图Graphs表示计算任务
    • 1.2 在被称之为会话Session的上下文Context中执行图
    • 1.3 使用tensor表示数据
      • 1.3.1 tf.constant的用法
    • 1.4 通过变量vaiable维护状态
    • 1.5 使用feed和fetch可以为任意的操作赋值或者从其中获取数据
  • 沟通
  • 致谢

1.1使用图Graphs表示计算任务

as_default是一种方便、规范地管理和使用自定义计算图,将相关操作准确添加到期望的计算图中的重要手段。

import tensorflow as tf
Graph_mean = tf.Graph()
with Graph_mean.as_default():
    # 在这个自定义图中定义两个常量
    a = tf.constant(5, name='a')
    b = tf.constant(3, name='b')
    # 定义一个加法操作
    c = tf.add(a, b, name='c')

# 查看计算图中的操作
print(Graph_mean.get_operations())

在这里插入图片描述
在上述代码中:
首先通过 tf.Graph() 创建了一个新的计算图对象 graph。
然后使用 with graph.as_default() 上下文管理器,确保后续定义的操作都添加到这个自定义的计算图中。这里定义了两个常量 a 和 b,并通过 tf.add 操作将它们相加得到 c。
最后通过 graph.get_operations() 打印出这个计算图中的操作信息,可以看到包含了定义的常量和加法操作相关内容。

1.2 在被称之为会话Session的上下文Context中执行图

在下面这段代码中 通过tf.compat.v1.Session 定义一个会话,使用run来进行定义好的加法操作

import tensorflow as tf
Graph_mean = tf.Graph()
with Graph_mean.as_default():
    # 在这个自定义图中定义两个常量
    a = tf.constant(5, name='a')
    b = tf.constant(3, name='b')
    # 定义一个加法操作
    c = tf.add(a, b, name='c')

with tf.compat.v1.Session(graph = Graph_mean) as cacluate:
    result = cacluate.run(c)
    print("计算结果:", result)
    

在这里插入图片描述
注意:网上跟TensorFlow的代码有很多,因为版本不同,有的时候会遇到warnings ,一些老版本的代码使用的是tf.Session,但是在1.14.0的版本中,对于老版本代码不再维护,推荐使用tf.compat.v1.Session来避免warnings,提醒大家是怕大家在阅读一些Github中找到的项目复制代码到自己的项目中。

1.3 使用tensor表示数据

1.3.1 tf.constant的用法

tf.constant(value, dtype=None, shape=None, name=‘constant’)
dtype:这是可选参数,用于指定张量的数据类型。
shape:也是可选参数,用于指定张量的形状。如果指定了形状,value的元素个数必须与形状所定义的元素个数一致。
name:同样是可选参数,用于给这个常量张量一个名字。
下面的代码展示了不同参数的作用

import tensorflow as tf
# 这是一个标量,也可以叫做零维张量
zero_dim_scalar = tf.constant(10,dtype=tf.float32)
# 创建一个一维张量
one_dim_tensor = tf.constant([1,2,3])
# 创建一个二维张量
two_dim_tensor = tf.constant([[1,2],[3,4]])
# 创建一个三维张量
tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]]],name='three_dim_tensor')

with tf.compat.v1.Session()as cacluate:
    print(f"常量:{cacluate.run(zero_dim_scalar)}")
    print(f"一维张量:{cacluate.run(one_dim_tensor)}")
    print(f"二维张量:{cacluate.run(two_dim_tensor)}")
    print(f"三维张量:{cacluate.run(three_dim_tensor)}")

在这里插入图片描述

1.4 通过变量vaiable维护状态

在下面这段代码中,使用tf.Variable定义一个变量variable_element,给他定义了一个自增1 操作add_one_option,在会话中初始化以后,用for循环重复执行查看变量变化情况

import tensorflow as tf
# 定义一个Variable 变量叫做 variable_element
variable_element = tf.Variable(0, dtype=tf.int32)
# 定义一个使 variable_element自增1的操作
add_one_option = variable_element.assign_add(1)
# 使用variable需要先初始化
init_option = tf.global_variables_initializer()

with tf.compat.v1.Session() as cacluate:
    cacluate.run(init_option)
    for i in range(5):
        cacluate.run(add_one_option)
        print("变量当前值:", cacluate.run(variable_element))

在这里插入图片描述

1.5 使用feed和fetch可以为任意的操作赋值或者从其中获取数据

在下面的代码实例中,定义了占位符,并且定义了平方操作,然后传入需要处理的数据

import tensorflow as tf
# 创建占位符
place = tf.compat.v1.placeholder(dtype = tf.int32,shape = [None])

# 创建一个操作,计算向量中元素的平方
square_option = tf.square(place)

with tf.compat.v1.Session() as sess:
    # 使用feed机制,将实际的数据传入占位符并执行操作,获取结果(fetch)
    input_data = [1, 2, 3]
    result = sess.run(square_option, feed_dict={place: input_data})
    print("计算结果:", result)

在这里插入图片描述

沟通

如果你们哪里有看不懂的地方可以积极和我沟通,我哪里讲的不够全了,哪里讲的不太对了,万事万物都是发展的,当你们有经验了以后,你们也会发现我的不足,希望我们能共同进步。

致谢

本文参考了一些博主的文章,博取了他们的长处,也结合了我的一些经验,对他们表达诚挚的感谢,使我对 TensorFlow的使用有更深入的了解,也推荐大家去阅读一下他们的文章。纸上学来终觉浅,明知此事要躬行:
TensorFlow创建常量(tf.constant)详解
tf.compat.v1.placeholder


http://www.niftyadmin.cn/n/5754526.html

相关文章

10款高效音频剪辑工具,让声音编辑更上一层楼。

音频剪辑在音频,视频,广告制作,游戏开发,广播等领域中都有广泛的应用。通过音频剪辑,创作者可以通将不同的音频片段进行剪切、拼接、混音等操作,创作出风格各异的音乐作品。如果你也正在为音频创作而努力的…

Go语言的零值可用性:优势与限制

Go语言以其简洁和高效的设计理念而著称,其中之一便是“零值可用”的特性。这一特性使得许多类型在未显式初始化时即可直接安全地使用,大大简化了代码的初始化过程。然而,并非所有类型都支持零值可用,且在使用时也存在一定的限制。…

如何解决sourcetree 一打开就闪退问题

找到sourcetree的软件位置(图标右击 打开文件位置) 往上找 找到 AppData ,然后进入到这个文件下【\AppData\Local\Atlassian】 删除 sourcetree 的缓存 (可能不止一个 类似这种的都删除)

vue注册全局组件,其他地方可以直接方便的调用

文章目录 问题注册全局组件完结 问题 本来我们想使用某个组件,需要在各个地方引入对应的参数,并配置好components内容,才可以使用 但是随着用的越来越多,这种方法变得重复且易出错 注册全局组件 修改main.js文件,放…

Flume1.9.0自定义拦截器

需求 1、在linux日志文件/data/log/moreInfoRes.log中一直会产生如下JSON数据: {"id":"14943445328940974601","uid":"840717325115457536","lat":"53.530598","lnt":"-2.5620373&qu…

【阅读记录-章节2】Build a Large Language Model (From Scratch)

目录 2.Working with text data2.1 Understanding word embeddings2.2 Tokenizing text通过一个简单的实验来理解文本的词元化概念关键概念 2.3 Converting tokens into token IDs实现分词器类(Tokenizer Class)应用分词器测试文本的编码与解码通过分词器…

AI风向标|算力与通信的完美融合,SRM6690解锁端侧AI的智能密码

当前,5G技术已经成为推动数字经济和实体经济深度融合的关键驱动力,进入5G发展的下半场,5G与AI的融合正推动诸多行业的数字化转型和创新发展,终端侧AI和端云混合式AI将广泛应用于各类消费终端和各行各业。 在推动5G和AI与各行业场…

【数据库取证】快速从服务器镜像文件中获取后台隐藏数据

文章关键词:电子数据取证、数据库取证、电子物证、云取证、手机取证、计算机取证、服务器取证 小编最近做了很多鉴定案件和参加相关电子数据取证比武赛,经常涉及到服务器数据库分析。现在分享一下技术方案,供各位在工作中和取证赛事中取得好成…