tensorflow1.14(一、初识)

2023-11-15

默认图与自定义图

import tensorflow as tf
a = tf.constant(1)
b = tf.constant(3)
c = tf.constant(5,name="name1")
d = tf.constant(7,name="name1")   # name:操作名称,可自定义
e = a+b+c+d
print(a,a.graph)
print(b,b.graph)
print(c,c.graph)
print(d,d.graph)
print(e,e.graph)

with tf.Session() as sess:
    e_value = sess.run(e)
    print(e_value)
    print(sess.graph)

# 自定义图------------------------------------------------------------
my_g = tf.Graph()
with my_g.as_default():
    my_a = tf.constant(10)
    my_b = tf.constant(30)
    my_c = tf.constant(50, name="name1")
    my_d = tf.constant(70, name="name1")  # name:操作名称,可自定义
    my_e = my_a + my_b + my_c + my_d
    print(my_a, my_a.graph)
    print(my_b, my_b.graph)
    print(my_c, my_c.graph)
    print(my_d, my_d.graph)
    print(my_e, my_e.graph)

with tf.Session(graph=my_g) as my_sess:
    my_e_value = my_sess.run(my_e)
    print(my_e_value)
    print(my_sess.graph)

Tensor("Const:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DD3047C88>
Tensor("Const_1:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DD3047C88>
Tensor("name1:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DD3047C88>
Tensor("name1_1:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DD3047C88>
Tensor("add_2:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DD3047C88>
16

<tensorflow.python.framework.ops.Graph object at 0x0000018DD3047C88>
Tensor("Const:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DEBC79748>
Tensor("Const_1:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DEBC79748>
Tensor("name1:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DEBC79748>
Tensor("name1_1:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DEBC79748>
Tensor("add_2:0", shape=(), dtype=int32) <tensorflow.python.framework.ops.Graph object at 0x0000018DEBC79748>
160

结论:

1. sess.graph和a.graph均可以查询图程序的地址

2. 不同图有不同的命名空间(不同图的操作名称可以重复,同一图程序则不能重复)

操作函数与操作对象

操作函数:tf.constant(Tensor对象)  输入一个Tensor对象,输出一个Const对象

操作对象:Const

一个操作函数会返回操作对象

a = tf.constant(5,name="name1")
print(a)
……
e = a+b+c+d
print(e)

Tensor("name1:0", shape=(), dtype=int32) 

创建了一个名为name1的tf.Operation并返回了一个名为"name1:0"的tf.Tensor

Tensor("add_2:0", shape=(), dtype=int32)  add:指令名称 0:输出序号

创建了一个名为add_2的tf.Operation并返回了一个名为"add_2:0"的tf.Tensor

TensorBoard基础操作

# 将图写入本地生成event文件
tf.summary.FileWriter("../summary",graph=sess.graph)  #一定是运行的时候才能写吗
(tf1) G:\Pyfor4\Tensorflor114_prj>tensorboard --logdir="./summary"

浏览器输入:127.0.0.1:6006

两种会话

tf.InteractiveSession()与a.eval()的配合:用于交互式上下文中的TensorFlow,例如shell

>>>tf.InteractiveSession()
 <tensorflow.python.client.session.InteractiveSession at 0x2320811e488>
>>>a = tf.constant(3)
>>>a
Out[5]: <tf.Tensor 'Const:0' shape=() dtype=int32>
>>>a.eval()
Out[6]: 3

tf.Session()用于完整的程序当中sess.run()等同于eva() :运行图程序并获取张量值

    #试图运行自定义图
    with tf.Session(graph=my_g) as my_sess:   #not an element of this graph.
        # my_C = my_sess.run(c_new)
        # print(my_C)
        print(c_new.eval())  # 等同于my_sess.run(c_new)

*传统会话(需要手动close) 

# 传统的会话方式,为了方便回收通常使用上下文管理器
my_sess = tf.Session(graph=my_g)
my_e_value = my_sess.run(my_e)
print(my_e_value)
my_sess.close()

*tf.Session的两个参数:关于远程调试 

tf.Session(graph=my_g,config=tf.ConfigProto(allow_soft_placement=True,
                                                      log_device_placement=True))

2022-11-18 07:09:01.925172: I tensorflow/core/common_runtime/direct_session.cc:296] Device mapping:

2022-11-18 07:09:01.925773: I tensorflow/core/common_runtime/placer.cc:54] Add: (Add)/job:localhost/replica:0/task:0/device:CPU:0
2022-11-18 07:09:01.925896: I tensorflow/core/common_runtime/placer.cc:54] Const: (Const)/job:localhost/replica:0/task:0/device:CPU:0
2022-11-18 07:09:01.926035: I tensorflow/core/common_runtime/placer.cc:54] Const_1: (Const)/job:localhost/replica:0/task:0/device:CPU:0
2022-11-18 07:09:01.926153: I tensorflow/core/common_runtime/placer.cc:54] name1: (Const)/job:localhost/replica:0/task:0/device:CPU:0
2022-11-18 07:09:01.926272: I tensorflow/core/common_runtime/placer.cc:54] name1_1: (Const)/job:localhost/replica:0/task:0/device:CPU:0
 

会话的run()

sess = tf.Session()
# 计算C的值
print(sess.run(c))
print(c.eval(session=sess))

 同时查看多个Operation:用列表的形式传入

my_eabc_value = my_sess.run([my_e,my_a,my_b,my_c])

[90, 10, 30, 50]

会话中占位符的处理:

占位符:tf.placeholder()

sess.run(sum_ab,feed_dict={a:3.0,b:5.0}) 必须有feed_dict参数

a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
sum_ab = tf.add(a,b)

with tf.Session() as sess:
    print(sess.run(sum_ab,feed_dict={a:3.0,b:5.0}))  #当叶子为占位符、必须传递feed_dict

会话报错:

张量(Tensor)

n维数组、类似numpy.ndarray的操作

创建:

# 常规
a = tf.constant(10)    # shape=()
b = tf.constant([12,34,45])   # shape=(3,)
c = tf.constant([[12,34,45],
                 [23,45,65]])   # shape=(2, 3)
# 零张量与壹张量
tf.zeros(shape = [3,4])         # dtype=float32
tf.ones(shape = [3,4])          # dtype=float32
# 随机张量
tf.random_normal(shape = [3,4])
tf.random_normal(shape = [3,4], mean=1.75, stddev=0.12)
# 其他……

张量的变换:

1. dtype转变

2.更新静态形状

3. 更新动态形状

#dtype转变 
a = tf.constant([[1,2,3,4],[5,6,7,8]])
print(a)   # Tensor("Const:0", shape=(2, 4), dtype=int32)
res_a = tf.cast(a,dtype=tf.float32)   # 类型转换:并不会改变原始的type ,返回新的张量
print(a)   # Tensor("Const:0", shape=(2, 4), dtype=int32)
print(res_a)  # Tensor("Cast:0", shape=(2, 4), dtype=float32)
# 更新静态形状(在形状没有完全固定下来的占位符)
a_p = tf.placeholder(dtype=tf.float32, shape=[None,None])
b_p = tf.placeholder(dtype=tf.float32, shape=[None,10])
c_p = tf.placeholder(dtype=tf.float32, shape=[3,2])
print(a_p)    # Tensor("Placeholder:0", shape=(?, ?), dtype=float32)
print(b_p)    # Tensor("Placeholder_1:0", shape=(?, 10), dtype=float32)
print(c_p)    # Tensor("Placeholder_2:0", shape=(3, 2), dtype=float32)
a_p.set_shape([2,3])   # 要兼容原有的shape,只能更新没有完全定下来的部分
b_p.set_shape([2,10])
print(a_p)    # Tensor("Placeholder:0", shape=(2, 3), dtype=float32)
print(b_p)    # Tensor("Placeholder_1:0", shape=(2, 10), dtype=float32)
# 更新动态形状 tf.reshape():可以跨阶,但是不能修改元素的个数
a_p_321 = tf.reshape(a_p, shape=[3,2,1])
print("reshape后的a_p:",a_p_321)   # reshape后的a_p: Tensor("Reshape:0", shape=(3, 2, 1), dtype=float32)

张量的运算

降维运算tf.reduce_all(x)

def math_reduce():
    x = tf.constant([[True,True],
                     [False,False]])
    print(x)
    a1 = tf.reduce_all(x)
    print(a1)
    a2 = tf.reduce_all(x,0)    # 纵轴
    print(a2)
    a3 = tf.reduce_all(x,1)    # 横轴
    print(a2)
    with tf.Session() as sess:
        print(sess.run([x,a1,a2,a3]))

Tensor("Const:0", shape=(2, 2), dtype=bool)
Tensor("All:0", shape=(), dtype=bool)
Tensor("All_1:0", shape=(2,), dtype=bool)
Tensor("All_1:0", shape=(2,), dtype=bool)
[array([[ True,  True],
           [False, False]]), False, array([False, False]), array([ True, False])]

变量OP   

  • 存储持久化
  • 可修改值
  • 可指定被训练

创建、初始化变量

def variable_demo():
    # 定义变量
    a = tf.Variable(initial_value=50)
    b = tf.Variable(initial_value=40)
    c = tf.add(a,b)
    print("a:\n",a)    #  <tf.Variable 'Variable:0' shape=() dtype=int32_ref>
    print("b:\n",b)    #  <tf.Variable 'Variable_1:0' shape=() dtype=int32_ref>
    print("c:\n",c)    #  Tensor("Add:0", shape=(), dtype=int32)

    #初始化变量
    init = tf.global_variables_initializer()

    #开启会话
    with tf.Session() as sess:
        sess.run(init)
        print(sess.run([a,b,c]))   # [50, 40, 90]

    return None

定义新的命名空间 :tf.variable_scope("my_scope")

  • 使得结构更加清晰
    with tf.variable_scope("my_scope"):
        a = tf.Variable(initial_value=50)
        b = tf.Variable(initial_value=40)
    with tf.variable_scope("your_scope"):
        c = tf.add(a,b)
    print("a:\n",a)    # <tf.Variable 'my_scope/Variable:0' shape=() dtype=int32_ref>
    print("b:\n",b)    # <tf.Variable 'my_scope/Variable_1:0' shape=() dtype=int32_ref>
    print("c:\n",c)    # Tensor("your_scope/Add:0", shape=(), dtype=int32)

其他基础API

高级API

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tensorflow1.14(一、初识) 的相关文章

随机推荐

  • 低秩分解的代码---(CODE) Low-Rank Matrix Recovery

    SAMPLE CODE Robust PCA Matrix Completion Comparison of Algorithms Robust PCA We provide MATLAB packages to solve the RPC
  • xmanager enterprise 5中文破解版下载(附产品密钥)

    xmanager 5破解版是一款功能强大的远程桌面管理软件 广泛用于各种领域的工作 包括大型工艺与半导体和服务器管理设计的IDC 互联网数据中心 大学和公司的服务器管理员与想要通过互联网连接到远程主机的个人用户是这个产品常用群体 xmana
  • centos安装后没有图形化界面

    办法 重新安装 不要选择最小模式 2 连接外网 依次执行安装指令 本人使用第二种方法已经成功 1 yum groupinstall X Window System y 2 yum groupinstall GNOME Desktop 当出现
  • LLMs开源模型们的分布式训练和量化

    前一篇博文整理了 LLMs开源模型们和数据集简介 这篇博文主要整理一下目前流行的训练方法和量化 图自Towards a Unified View of Parameter Efficient Transfer Learning Tuning
  • linux查看服务端口占用情况

    1 netstat命令 查看所有使用的端口 netstat tunlp 参数说明 参数 作用 t 指明显示TCP端口 u 指明显示UDP端口 l 仅显示监听套接字 所谓套接字就是使应用程序能够读写与收发通讯协议 protocol 与资料的程
  • PCL点云处理之批量读写点云、随机赋予颜色 并保存

    include
  • 19级计算机应用技术题库,华东师大计算机应用技术题库.doc

    华东师大计算机应用技术题库 第一章 计算机应用基础知识 一 单选题 1 一般认为 信息 information 是 C A 数据 B 人们关心的事情的消息 C 反映物质及其运动属性及特征的原始事实 D 记录下来的可鉴别的符号 2 信息资源的
  • 文件包含的漏洞、原理、利用

    最近的总结都比较简单 但不是在水 只是在我学习过程中总结的觉得真的有用的知识 还有就是有些代码发不出来我也没办法 所以就有所调整 文件包含原理是啥 文件包含漏洞 即file inclusion 意思是文件包含 是指当服务器开启allow u
  • Runnable和Callable的区别

    Runnable和Callable的区别 Callable接口 Runnable接口 Runnable和Callable的区别 相同点 不同点 注意点 Callable工作的Demo ExcutorService中的excutor和subm
  • 为什么selenium自动化测试能打开浏览器但无法打开网页

    from selenium webdriver import Chrome chrome Chrome executable path C Program Files Google Chrome Application chrome exe
  • Django框架实战:搭建一个小型的服务器运维网站(一)

    本文会遇到很多的代码 如果想要源代码的小伙伴 我已经分享到下方了 想要的可以自己研究一下 本人从事Python开发多年 很多小伙伴说想学一下web中的Django框架 我就用Django框架做一系列的实战项目 欢迎大家订阅 欢迎大家订阅微信
  • MySQL存储很长500的汉字选用字符类型

    问题 我需要用MySQL存储一段文字 在纠结用什么类型 百度了一下选用这些 问题 MySQL怎么存储大段文字1000字左右的 解决 快速通道 mysql里怎么存储很多汉字 我们得了解一下字符类型 一般在保存少量字符串的时候 我们会选择 CH
  • Python输出文字改变颜色

    Python输出文字改变颜色的方法 一 使用注释性输出 一 基本语法 033 显示方式 前景色 背景色m 033 0m 显示方式 前景色 背景色都为可选参数 选择自己需要的即可 而且顺序可变非固定 但建议按照默认顺序书写 注 可添加在pri
  • python:openpyxl取某一行、某一列、应用excel函数

    前言 话外 如何取某一列这个 真的是气死我气死我气死我拉 依然记录学习使用 属于昨天内容的进阶版 如果想要基础操作 如创建excel 创建sheet 可以点击下方链接哦 python openpyxl基础操作 一 创建 xlsx文件 豆包的
  • sqlserver 2012 出现自增ID跳段试增加,中间却查不出数据?求助大神

    sqlserver 2012 出现自增ID跳段试增加 中间却查不出数据 求助大神 数据由自动采集软件cimplicity采集 自动插入到这个表 这个过程无法进行干预 但是数据库出现采集数据ID自增跳崖试变化 直接由32给干到了1047 中间
  • 面向ad-hoc查询的实时SQL分析系统

    Impala Hive现状分析与前景展望 Impala和Hive野史 提到Impala就不得不提Google的Dremel 处理PB级数据规模的基于SQL的交互式 实时数据分析系统 Dremel是Google推出的PaaS数据分析服务Big
  • 第五章Docker

    文章目录 什么是Docker 应用部署的环境问题 Docker解决依赖兼容问题 Docker解决操作系统环境差异 小结 Docker与虚拟机 Docker架构 镜像和容器 DockerHub Docker架构 安装Docker 卸载 可选
  • 一文通透——Kali Linux基础入门

    学习Kali 郑重声明 此文章可能会包含敏感以及危险的命令 命令有风险 回车需谨慎 此文章仅供学习交流与参考使用 禁止运用于任何非法行动或测试中 若有预期之外的后果 将不承担任何责任 再次进行警告与提醒 root KaLi Erhe cat
  • Apache apisix默认密钥漏洞(CVE-2020-13945)

    目录 漏洞描述 影响版本 漏洞复现 声明 本文仅供学习参考 其中涉及的一切资源均来源于网络 请勿用于任何非法行为 否则您将自行承担相应后果 本人不承担任何法律及连带责任 漏洞描述 Apache APISIX 是一个动态 实时 高性能的 AP
  • tensorflow1.14(一、初识)

    默认图与自定义图 import tensorflow as tf a tf constant 1 b tf constant 3 c tf constant 5 name name1 d tf constant 7 name name1 n