9 tensorflow提示in different while loops的错误该如何解决
示例代码
ii=tf.constant(0,dtype=tf.int32)
loop__cond=lambda a: tf.less(a,sentence_length)
loop__vars=[ii]
def __recurrence(ii):
#前面的0到sentence_length-1的下标,存储的就是最原始的词向量,但是我们也要将其转变为Tensor
new_column_tensor=tf.expand_dims(sentence_embeddings[:,ii],1)
self.nodes_tensor=self.modify_one_column(self.nodes_tensor,new_column_tensor,ii,numlines_tensor,numcolunms_tensor)
ii=tf.add(ii,1)
return ii
ii=tf.while_loop(loop__cond,__recurrence,loop__vars,parallel_iterations=1)
我是将nodes_tensor直接通过self.nodes_tensor的方式使得其成为类的成员变量。然后类调用自身方法的时候,执行上面的循环对nodes_tensor进行操作。
但是,如果此时外层还嵌套有另外一层循环,此时,再使用self.nodes_tensor,比如(tf.reduce_sum(self.nodes_tensor))或者(tf.identity(self.nodes_tensor))就会报错。
会提示类似于如下的信息:
ValueError: Cannot use 'while/Sum' as input to 'while/while_1/concat_3' because they are in different while loops. See info log for more details.
也就是说,self.nodes_tensor是一个对象的引用,其指向的实体是处于一个while loop中。如果在另外一while loop中使用它的话,就会报错。
但是,我们可以将上述代码进行修正,修正后代码如下:
ii=tf.constant(0,dtype=tf.int32)
loop__cond=lambda a,b: tf.less(a,sentence_length)
loop__vars=[ii,nodes_tensor]
def __recurrence(ii,nodes_tensor):
#前面的0到sentence_length-1的下标,存储的就是最原始的词向量,但是我们也要将其转变为Tensor
new_column_tensor=tf.expand_dims(sentence_embeddings[:,ii],1)
nodes_tensor=self.modify_one_column(nodes_tensor,new_column_tensor,ii,numlines_tensor,numcolunms_tensor)
ii=tf.add(ii,1)
return ii,nodes_tensor
ii,nodes_tensor=tf.while_loop(loop__cond,__recurrence,loop__vars,parallel_iterations=1)
此时,通过内层循环返回的nodes_tensor就可以在外层循环中继续使用。
这种错误比较小众。最好的就是用return在__recurrence中返回你想使用的tensor节点。
另一种错误形式
在循环内部产生的tensor,不能直接在循环外部使用。
比如:
self.batch_constructionError=tf.reduce_sum(self.batch_trees_total_cost)[0]
self.batch_trees_total_cost是在循环内部产生的。在循环外部继续加上tf的op操作,会提示如下错误结论:
*** ValueError: Cannot use 'while/concat' as input to 'loss/Sum' because 'while/concat' is in a while loop. See info log for more details.
9 tensorflow提示in different while loops的错误该如何解决的更多相关文章
- Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...
- SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
SQLServer2005+ 附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 我们在用Sql SQLServer2005+附加数据库文件时弹出错误信息如下图的处理办法: 方案一: ...
- [经使用有效]Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...
- Sqlserver 2012附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
环境: Win10系统 SQLSERver 2012 情况: 使用混合登陆方式,sa账户密码正确登陆后,附加.mdf文件出现此错误. 尝试解决方法一:使用管理员运行SQLSERver2012,sa账户 ...
- 使用phpmailer发送smtp邮件时提示 SMTP Error: Could not authenticate 错误
使用phpmailer发送smtp邮件时提示 SMTP Error: Could not authenticate 错误 这个错误是验证出现错误, $mail->Port = 25; //SMT ...
- 运行WampServer时,提示Exception Exception in module wampmanager.exe at 000F15A0.解决办法
出现问题:运行WampServer时,提示Exception Exception in module wampmanager.exe at 000F15A0.解决办法 出现问题原因: ①:缺少Visu ...
- 运行js提示库没有注册错误8002801d的解决办法
运行js提示库没有注册错误8002801d的解决办法这个错误主要是因为服务器上的windows scripts版本较低,请按下面的链接下载较高版本windows scripts 5.6并在服务器上进行 ...
- 安装concrete时提示“...database does not support InnoDB database tables..."如何解决
安装很多系统时,经常有有提示: "...database does not support InnoDB database tables..." 解决办法: 找到MySQL的配置文 ...
- PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
这篇文章主要介绍了PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法,是在进行PHP数据库程序开发中常会遇 ...
随机推荐
- Netty核心概念(8)之Netty线程模型
1.前言 第7节初步学习了一下Java原本的线程池是如何工作的,以及Future的为什么能够达到其效果,这些知识对于理解本章有很大的帮助,不了解的可以先看上一节. Netty为什么会高效?回答就是良好 ...
- windows下如何下载并安装Python
1.打开Python官网,点download中的windows(或者打开网址https://www.python.org/downloads/windows/) 2.下载exe后缀的可执行文件,根据自 ...
- Karatsuba乘法--实现大数相乘
Karatsuba乘法 Karatsuba乘法是一种快速乘法.此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表.此算法主要用于两个大数相乘 ...
- SQL Function 自定义函数
目录 产生背景(已经有了存储过程,为什么还要使用自定义函数) 发展历史 构成 使用方法 适用范围 注意事项 疑问 内容 产生背景(已经有了存储过程,为什么还要使用自定义函数) 与存储过程的区别(存 ...
- java中的复制数组arraycopy()
System.arraycopy();//静态方法,在System类中定义,注意copy首字母是小写的 例子: int[] a = {1,2,3,4,5}; int[] b = {9,8,7,6}; ...
- 代码查看php是否已开启rewrite功能模块
通过php代码来查询,是否把rewrite模块打开了 <?php $result = apache_get_modules(); if(in_array('mod_rewrite', $resu ...
- jQuery源码分析-03构造jQuery对象-源码结构和核心函数
3. 构造jQuery对象 3.1源码结构 先看看总体结构,再做分解: (function( window, undefined ) { var jQuery = (function() { // 构 ...
- CSS3 颜色属性
关键字颜色 red 十六进制颜色 #FF0000 RGB颜色 rgb(255,0,0) 新增的颜色表示方法 RGBa: RGB代表光的三原色,Red.Green和Blue CSS3中可以增加一个值 ...
- 【JavaScript 从零开始】 数字 文本 包装对象
JavaScript中的算术运算 JavaScript 还自称更加复杂的算术运算,这些复杂的运算通过作为Math对象的属性定义的函数和常量来实现: Math.pow(2,53) //=>9007 ...
- 读取配置文件-AppConfig
using System.Xml; using System.IO; using System; namespace Framework.Common { /// <summary> // ...