Tensorflow基本概念

简介:本文从Graph讲到Session,同时讲解了tf.constant创建tensor的用法和variable需要初始化的知识点,可以给你打好一个学习Tensorflow的基础。本文都是基于TensorFlow1.14.0的版本下运行。

本专栏将会系统的讲解TensorFlow在1.14.0版本下的各种用法并且会讲解各种常用的神经网络模型,希望能给大家带来一定的帮助,我也需要大家的关注

Tensorflow基本概念

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

1.1使用图Graphs表示计算任务

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

python 复制代码
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来进行定义好的加法操作

python 复制代码
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:同样是可选参数,用于给这个常量张量一个名字。

下面的代码展示了不同参数的作用

python 复制代码
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循环重复执行查看变量变化情况

python 复制代码
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可以为任意的操作赋值或者从其中获取数据

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

python 复制代码
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

相关推荐
Navicat中国4 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI4 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区5 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
XCDoris7 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy7 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V7 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI7 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技7 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
海宇数据7 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化
冬奇Lab7 小时前
开源项目第242期:HyperFrames —— 写 HTML 就能渲染视频,专为 AI Agent 设计的确定性视频框架
人工智能·开源·音视频开发