tensorflow的sess.run的参数执行顺序

article/2025/9/26 19:05:35

sess.run的多个参数执行

是将整个计算图中所有需要计算的节点,计算完全后一次行输出,

两次print顺序不同,结果不同

import tensorflow as tf# 基础数据
state1 = tf.Variable(0, dtype=tf.int8,name= 'mi')
state = tf.Variable(0, dtype=tf.int8,name= 'MID_VAL')
one = tf.constant(1, dtype=tf.int8,name='ONE')# 对数据处理的节点new_val = tf.add(state, one*2, name='ADD')   # state+1→ new_val
update = tf.assign(state, new_val, name='update')   # update功能,更新参数init = tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)print(sess.run([new_val,state]))print(sess.run([update,state]))

下图中第一次打印的是没有run赋值节点的内容,因此未执行后边的赋值动作
在这里插入图片描述
当将打印的两个命令换顺序后出现,下面的内容,分析不同顺序打印的差别原因是,在第一个命令中执行了赋值动作,后边的state初始值是2,对于没有要求执行的后面节点动作,也不会自动执行(第二个state没有赋值要求,就没有变化)
在这里插入图片描述

同一次run是将需要的节点全部计算后输出

将打印的中的参数修改,发现new_val打印的数值仍然是2,和前面一样。表明参数中的update的赋值命令执行后,并没有再次对其前面的步骤进行重复,(因为new_val没有成为4)
在这里插入图片描述

对同一个变量进行赋值操作

import tensorflow as tf# 基础数据
state = tf.Variable(0, dtype=tf.int8,name= 'MID_VAL')
one = tf.constant(1, dtype=tf.int8,name='ONE')# 对数据处理的节点new_val = tf.add(state, 2, name='ADD')   # state+1→ new_val
update = tf.assign(state, new_val, name='update')   # update功能,更新参数
new_val1 = tf.multiply(state, 5, name='mul')  # 乘法
update1 = tf.assign(state, new_val1, name='update1')init = tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)print(sess.run([update, update1]))

下面是上述程序执行的节点过程,根据结果是先进行了绿色线的state更新,所以最后才赋值为10,但通过改变update和update1的顺序结果并未改变,但还是中间变换有一些问题
在这里插入图片描述

将中间的数据变化也显示

显示结果中的2和12表示进行了加法运算,这是能理解的

with tf.Session() as sess:sess.run(init)for _ in range(2):print(sess.run([update,new_val, update1, new_val1]))

在这里插入图片描述

混乱的执行列表

将加法的执行换成下面,只是加了一个one*,但输出结果就不同,而且有时候同样执行同一个程序,会出现两种不同结果,从下面结果中表明进行了加法,但在赋值过程中出现问题,有可能是时间问题

new_val = tf.add(state, one*2, name='ADD') 

在这里插入图片描述
当只改变new_val1的值的时候

new_val1 = tf.multiply(state, one*5, name='mul')  # 乘法

出现的结果被赋值的结果就不是0,可以理解为,先进行了加法结果的赋值,后进行乘法的赋值


http://chatgpt.dhexx.cn/article/255w9sI4.shtml

相关文章

sess.run()

函数:run(fetches, feed_dictNone, optionsNone, run_metadataNone) 当构建完图后,需要在一个session会话中启动图,第一步是创建一个Session对象。 为了取回(Fetch)操作的输出内容, 可以在使用 Session 对象…

Paper Reading:SESS(Self-Ensembling Semi-supervised3D ObjectDetction)

BackGround 虽然3D点云的目标检测当前运用十分广泛,但是当前大部分3D目标检测的方法强依赖于带有标注的数据。这些带有标注的数据往往是需要付出昂贵的代价,在2021年的水平大概是¥0.1一个框,那么一帧数据也就是对应的&#xffe5…

SESS: Self-Ensembling Semi-Supervised 3D Object Detection论文阅读及理解

SESS: Self-Ensembling Semi-Supervised 3D Object Detection Abstract 3d检测通常以来目标的标签和注释,然而获得这些注释是十分困难的。 SESS一种自集成的半监督三维目标检测框架。 设计了一种扰动方案,加强对未标记数据和新的为可见数据的泛化。 …

Elasticsearch——》ngram分词器

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

Elasticsearch 的 NGram 分词器使用技巧

一、什么是NGram 分词器? NGram分词器是ES自带的具有前缀匹配搜索功能的一个文本分词器。它能根据文本的步长逐步对写入的文本内容进行约束切割; 二、NGram和index-time搜索推荐原理 搜索的时候,不用再根据一个前缀,然后扫描整个倒排索引了…

Ngram模型

N-Gram是大词汇连续语音识别中常用的一种语言模型,对中文而言,我们称之为汉语语言模型(CLM, Chinese Language Model)。汉语语言模型利用上下文中相邻词间的搭配信息,在需要把连续无空格的拼音、笔划,或代表字母或笔划的数字&…

ElasticSearch之ngram分词器

一、什么是NGram 分词器? edge_ngram和ngram是ElasticSearch自带的两个分词器,一般设置索引映射的时候都会用到,设置完步长之后,就可以直接给解析器analyzer的tokenizer赋值使用。 二、怎么使用 完整的索引结构: {&…

MySql的Ngram全文索引

前言 在我们日常开发中,很多时候会遇到对数据库中某个字段模糊查询的需求,也就是like某个字段,但是很多公司像阿里,京东都禁止使用like来对数据库进行模糊查询,原因是啥呢? 我们先来看下面三条语句 其中t…

语言模型-Ngram

总结工作中用到和学习的知识,也算自己的一个笔记。 语言模型 语言模型简单来讲,就是计算一个句子的概率,更确切的说是计算组成这个句子一系列词语的概率。 举个简单的例子,我们知道“武松打死了老虎”相比于“老虎了死武松打”,更像是一句正常的话,这是因为前者出…

N-gram算法

语言模型 语言模型起源于语音识别(speech recognition),输入一段音频数据,语音识别系统通常会生成多个句子作为候选,究竟哪个句子更合理?就需要用到语言模型对候选句子进行排序。 语言模型:对于任意的词序列&#xf…

N-Gram语言模型

一、n-gram是什么 wikipedia上有关n-gram的定义: n-gram是一种统计语言模型,用来根据前(n-1)个item来预测第n个item。在应用层面,这些item可以是音素(语音识别应用)、字符(输入法应用)、词&am…

MATLAB 离散傅里叶变换(DFT)、逆离散傅里叶变换(IDFT)、快速傅里叶变换(FFT)的实现

离散傅里叶变换(DFT)、逆离散傅里叶变换(IDFT)的实现 代码如下,其中xn为时序序列 clc;clear; xn[7,6,5,4,3,2]; Xkdft(xn,6); xidft(Xk,6);subplot(2,2,1);stem(0:5,abs(Xk),filled); axis([0,5,0,1.1*max(abs(Xk))]…

图像处理基础(三)DFT与IDFT变换

傅里叶变换(DFT) 首先来看看傅里叶(DFT)变换的公式 (1) FP\frac {1}{N}\sum_{x0}^{N-1}\sum_{y0}^{N-1}P_{x,y}\exp(-j(\frac{2 \pi}{N})(uxvy)) 幅度 (2) w\sqrt{u^2v^2} 其中 u,v代表空间频率,即灰度梯度,梯度由坐标与灰度值求导的向量 w代表 振幅…

第4章 Python 数字图像处理(DIP) - 频率域滤波7 - 二维DFT和IDFT的一些性质 - 傅里叶频谱和相角

目录 二维DFT和IDFT的一些性质傅里叶频谱和相角 二维DFT和IDFT的一些性质 傅里叶频谱和相角 F ( u , v ) R ( u , v ) j I ( u , v ) ∣ F ( u , v ) ∣ e j ϕ ( u , v ) (4.86) F(u, v) R(u, v) jI(u, v) |F(u, v)|e^{j\phi(u,v)} \tag{4.86} F(u,v)R(u,v)jI(u,v)∣F(…

实数序列频谱的共轭对称性(DFT与IDFT仿真实现)

一、基础知识 1、傅里叶变换:通俗来讲,是以时间为自变量的信号与以频率为自变量的“频谱函数”之间的某种转换关系。 DFT:即离散傅里叶变换,对离散序列进行傅里叶变换。设x(n)为长度为M的有限长序列,其N点DFT定义(公…

第4章 Python 数字图像处理(DIP) - 频率域滤波8 - 二维DFT和IDFT的一些性质 - 二维离散卷积定理

目录 二维DFT和IDFT的一些性质二维离散卷积定理二维离散傅里叶变换性质的小结 二维DFT和IDFT的一些性质 二维离散卷积定理 二维循环卷积表达式: ( f ⋆ h ) ( x , y ) ∑ m 0 M − 1 ∑ n 0 N − 1 f ( m , n ) h ( x − m , y − n ) (4.94) (f \star h)(x, …

FFT学习笔记(DFT,IDFT)

昨天参悟了一天FFT,总算是理解了,今天的莫比乌斯反演也不太懂,干脆弃疗,决定来认真水一发博客。 什么是FFT? FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换&…

【OpenCV4】图像的傅里叶变换 cv::dft() 和逆变换 cv::idft() 解析(c++)

图像傅里叶变换的作用: 频谱分析,获取图像中高频低频的分布情况快速卷积,两个矩阵的傅里叶变换结果相乘 案例代码: cv::Mat TestOpencvDft() {cv::Mat lena cv::imread("lena.jpg", 0);cv::resize(lena, lena, cv::…

Matlab如何进行利用离散傅里叶逆变换iDFT 从频谱恢复时域信号

文章目录 1. 定义2. 变换和处理3. 函数4. 实例演示例1:单频正弦信号(整数周期采样)例2:含有直流分量的单频正弦信号例3:正弦复合信号例4:含有随机干扰的正弦信号例5:实际案例 5. 联系作者 1. 定…

离散傅里叶变换(DFT/IDFT、FFT/IFFT)运算量的讨论

前言:关于为什么要写这个博客 最近在重新看《合成孔径雷达成像 算法与实现》这本书,看到“离散傅里叶变换记其逆变换的运算量级为”这句话,就想起当初在学《数字信号处理》中FFT那章节时,书中有对比DFT和FFT的运算量的一些文字&am…