python 报错汇总【持续更新中....】

2023-11-17

 

1. Variable encoder/embedding_encoder already exists, disallowed.

总结: 由于跑的翻译模型需要构建两个embed,一直报这个错误: 
InvalidArgumentError (see above for traceback): assertion failed: [All values in memory_sequence_length must greater than zero.] [Condition x > 0 did not hold element-wise:] [x (source_seq_lengths:0) = ] [8 13 16...]

解决方式:

1. 增加 tf.get_variable_scope().reuse_variables()  #  将在当前的variable_scope下,将变量设置为reuse = True

2. 先在main函数调用模型之前,加上 tf.reset_default_graph() 

tf.reset_default_graph()  # 避免 Variable ./encoder/kernel already exists, disallowed.
model = Seq2Seq(args,logger=logger, batch_size=args.batch_size, model_path=args.ckpt_path)

然后在报错的Seq2Seq model的embeding 函数里,加一个assert声明变量全称:

"""    建立词向量    """
with tf.variable_scope("encoder"):
    embedding_encoder = tf.get_variable("embedding_encoder", [src_vocab_size, src_embed_size], dtype=dtype)
    
assert embedding_encoder.name == "encoder/embedding_encoder:0"  # 加上变量空间的变量全称,具有唯一性

with tf.variable_scope("decoder"):
    embedding_decoder = tf.get_variable("embedding_decoder", [tgt_vocab_size, tgt_embed_size], dtype=dtype)

 

2.  memory_seq_length 必须都大于0;

解决方式: 原始的文本数据中存在空行的样本,导致那一整行都是用PAD填充的,样本的实际长度就为0,模型会报错;

因此可以 重新清洗数据,删除空行, 可以用notepad++ 打开, Ctrl +F查找 ,扩展模式: 搜 \r\n\r\n 替换为\r\n 

 

3.  ValueError: Dimensions must be equal,

ValueError: Dimensions must be equal, but are 128 and 192 for 'decoder_1/while/BasicDecoderStep/decoder_1/attention_wrapper/attention_wrapper/multi_rnn_cell/cell_0/lstm_cell/MatMul_1' (op: 'MatMul') with input shapes: [64,128], [192,256].

 # 报错的位置:
outputs, _, _ = contrib.seq2seq.dynamic_decode(decoder=decoder, output_time_major=True, maximum_iterations=maximum_iterations)

原因: 在decoder 的第一层和第二层中使用了同一个cell

之前是

decoder_lstmcell = tf.nn.rnn_cell.LSTMCell(self.rnn_size)  # 用来构造一个decoder_cell
decoder_cell = tf.nn.rnn_cell.MultiRNNCell([decoder_lstmcell for _ in range(self.rnn_layer)])
decoder_init_state = self.encoder_final_state      # thought vector: 表示句子含义的数字序列

改正后,创建一个函数,

def get_decoder_cell(rnn_size):
    decoder_lstmcell = tf.nn.rnn_cell.LSTMCell(rnn_size)  # 用来构造一个decoder_cell
    return decoder_lstmcell
  
decoder_cell = tf.nn.rnn_cell.MultiRNNCell([get_decoder_cell(self.rnn_size) for _ in range(self.rnn_layer)])
decoder_init_state = self.encoder_final_state      # thought vector: 表示句子含义的数字序列

4. pip install pkgs 出现 Fatal error in launcher: Unable to create process using '".... python.exe"

解决方式: 强制重装 pip

python3  -m pip install --upgrade --force-reinstall pip

5. (模型训练时) OOM when allocating tensor with shape[177,128,27926] ...

OOM when allocating tensor with shape[177,128,27926] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc 

GPU内存不足导致 Out Of Memory,

解决方式: 把batchsize由128 改为 32,vocab大小由27926改为10000, 改小 。

6.  InvalidArgumentError: Found Inf or NaN global norm.  

报错的代码: clipped_gradients, _ = tf.clip_by_global_norm(gradients, 2)  # 梯度截断

报错信息:

InvalidArgumentError (see above for traceback): Found Inf or NaN global norm. : Tensor had Inf values
	 [[node VerifyFinite/CheckNumerics (defined at D:\projects\seq2seq\bin\model.py:215)  = CheckNumerics[T=DT_FLOAT, message="Found Inf or NaN global norm.", 
_device="/job:localhost/replica:0/task:0/device:CPU:0"](global_norm/global_norm)]]

可能原因:出现NaN或者Inf的原因一般可分为以下三种

  1. 输入数据有错,有时错误是由于记录文件和pbtxt文件之间的不一致引起的。
  2. 出现了运算错误,如除数为零,log0等
  3. 梯度爆炸

解决方法:

1. 首先调小学习速率,看看是否是由较高学习速率导致的。可以选择将学习速率降低一半, 或者降低一个数量级。

2. 检查运算错误,主要是有除法运算和取log的地方。判断是否有0出现,以及是否有0导致的问题,试着使用clip_by_value对数值进行限制。

3. 检查数据是否清洗干净。

4. 检查 label_map.pbtxt中指定的类数,和TFRecord配置文件中的“ num_classes”字段是否相等。

7. .
# 报错详情
OP_REQUIRES failed at lookup_table_op.cc:784 : Failed precondition: HashTable

FailedPreconditionError: HashTable has different value for same key. Key  has 19991 and trying to add value 20330

 

8. error: unrecognized arguments:  
# 输入命令
>>python ../THUMT/bin/trainer.py  --input corpus.en-zh.32k.en  corpus.en-zh.
32k.zh  --model transformer  
usage: trainer.py [<args>] [-h | --help]
trainer.py: error: unrecognized arguments: corpus.en-zh.32k.zh

原因: 参数 input 是 一个 list ,里面是两个路径参数, terminal端是用空格分隔不同的参数,因此 在定义时,增加  nargs=2

parser = argparse.ArgumentParser(description="Training neural machine translation models",
                                     usage="trainer.py [<args>] [-h | --help]")
    # input files
parser.add_argument("--input", type=str, default=[os.path.join(data_path, "corpus.en_zh.32k.en"),
                  os.path.join(data_path, "corpus.en_zh.32k.zh")],
                  nargs=2, help="Path of source and target corpus")   # nargs=2,

 

 
 
 
 
 
 
 
 
 
 
 
 

 

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

python 报错汇总【持续更新中....】 的相关文章

  • tensorflow安装教程(一般使用国内的清华源进行安装)

    注 安装tensorflow numpy这些源 记得用国内的清华镜像源 国外的源由于网络延迟无法安装 1 国内安装tensorflow的命令 pip install index url https pypi douban com simpl
  • 法拉克机器人自动怎么调_发那科机器人的简单设置你知道吗

    发那科机器人使用后台逻辑时 可以在后台执行只包含对应后台逻辑指令的TP程序 程序从 初到 后被反复执行 该执行不受急停 暂停 报警的影响 设定后台逻辑的步骤非常简单 1 按下MENU键 2 选择SETUP 3 选择BG LOGIC 进入如下
  • 洛谷P5731——蛇形方阵(c++)

    题目描述 给出一个不大于 9 的正整数 n 输出 n n 的蛇形方阵 从左上角填上 1 开始 顺时针方向依次填入数字 如同样例所示 注意每个数字有都会占用 3 个字符 前面使用空格补齐 输入格式 输入一个正整数 n 含义如题所述 输出格式
  • Qt 设置窗口的背景图片

    Qt 设置窗口的背景图片 一 给Qt窗口设置背景图片 mainwindow cpp 设置背景图片 path 图片路径 void MainWindow setBackgroundImage QString path QPixmap pixma
  • 零基础学习Vue: 第38课 Vue单页面使用router-link实现页面跳转小案例:

    零基础学习Vue 第38课 Vue单页面使用router link实现页面跳转小案例 实现效果如下 以下是所有代码
  • Ubuntu操作遇到的报错解决方法汇总(持续更新)

    1 在anaconda中创建了虚拟环境并安装了pytorch 但是编译过程中仍然报没有torch的错误 CMake Error at crawler crane crane tutorials CMakeLists txt 23 find
  • Form表单提交数据的几种方式

    1 submit提交 在form标签中添加Action 提交的地址 和method post 且有一个submit按钮
  • conda安装OpenCV

    安装参考 错误方法conda install channel https conda anaconda org menpo opencv3 C Users 15761 gt conda install channel https conda
  • Cplex求解QCP非线性规划

    import ilog concert import ilog cplex public class QCPex1 public static void main String args try IloCplex cplex new Ilo
  • Environment variable CLASSPATH not set!

    hdfs 问题 Environment variable CLASSPATH not set getJNIEnv getGlobalJNIEnv failed WARNING Logging before InitGoogleLogging
  • is not eligible for getting processed by all BeanPostProcessors

    BeanPostProcessor是控制Bean初始化开始和初始化结束的接口 换句话说实现BeanPostProcessor的bean会在其他bean初始化之前完成 BeanPostProcessor会通过接口方法检查其他类型的Bean并做
  • Visio 2013绘制时序图

    为什么要绘制时序图 我们编码的时候 知道有的用例的业务逻辑按照比较确定的时间先后顺序进行展开 这时候 我们就需要知道我们设计的系统中的不同类之间传递消息 可以认为是不同对象函数间的调用 要按照怎么样的顺序 传递什么消息 返回什么消息 这时候
  • Altium designer 原理图转换为pcb时出现的 unknown pin 和 failed to add class member

    网上有很多方法 大部分都是让直接新建一个pcb文件 这显然太不现实了 上述错误可以看出 unknown pin 的错误是在add pin to net的时候发生的 failed to add class member 的错误实在add to
  • 开源库TinyXML2简介及使用

    TinyXML2是一个开源 简单 小巧 高效的C XML解析器 它只有一个 h文件和一个 cpp文件组成 可以轻松集成到其它程序中 它解析XML文档并从中构建可以读取 修改和保存的文档对象模型 Document Object Model D
  • matplotlib绘制折线图

    matplotlib绘制折线图 这阳春三月的邵大白在家过的什么日子 幽栖地僻经过少 花径不曾缘客扫 开个逗b号纪念下这段闭关的时光 万一他以后就变成一个数据分析的大v号了来 好了邵大白课堂开课了 折线图绘制 咱先画个图 载慢悠的加东西 导包
  • Java基础(十三):枚举、注解

    文章目录 一 设置 author标签 二 枚举 enum 一 枚举的两种实现方式 二 enum常用方法 三 注解 一 设置 author标签 设置 author等标签 以后每次创建一个类 自动带着作者信息 二 枚举 enum 枚举表示一组常
  • git提交规范

    1 新功能用add 2 改bug用fix 3 如果使用禅道或者jira 在add或fix后面加上 编号如 add 3563 gt 1 指标名称修改
  • Android Studio解决gradle时下载资源过慢问题

    替换镜像下载方式 打开Android Studio项目中的build gradle文件 找到以下位置 修改jcenter地址为 https maven aliyun com repository jcenter 示例 buildscript
  • 前端实战:小实例5——锚点导航

    前言 锚点定位用于网站某一模块的定位 让用户能够通过锚点直接跳到相应模块 从而实现页面内跳转 常在网页内容较长时使用 多个锚点显示可用一个无序列表显示 利用 ul 和 li 标签 在 li 标签中使用 a 标签实现锚点 对应标签用法可查看
  • Spring Boot + Elasticsearch实现大批量数据集下中文的精确匹配-案例剖析

    缘由 数据存储在MYSQ库中 数据基本维持不变 但数据量又较大 几千万 放在MYSQL中查询效率上较慢 寻求一种简单有效的方式提高查询效率 MYSQL并不擅长大规模数据量下的数据查询 技术方案 考虑后期同样会使用到es 此次直接结合spri

随机推荐

  • Python-修改excel的某一列

    import xlrd 导入模块 from xlutils copy import copy 导入copy模块 rb xlrd open workbook 111 xls formatting info True 打开weng xls文件
  • matlab 点云随机采样到固定点数

    目录 一 采样滤波 1 算法概述 二 代码示例 三 结果展示 一 采样滤波 1 算法概述 给定固定采样点的个数 将点云下采样至给定的点数 二 代码示例 clc clear
  • ElasticSearch6.x 之字段类型

    本文转载至 https blog csdn net chengyuqiang article details 79048800 字段类型概述 字符串类型 1 string string类型在ElasticSearch 旧版本中使用较多 从E
  • 大数据跟区块链之间相互促进关系体现在哪?

    大数据 人工智能和区块链这几个词都是当下非常流行的科技名词 他们不仅拥有各自的特点 还能互相利用跟相互促进 大数据跟人工智能的结合会有什么样的好处 大数据和区块链的结合又能带来什么 今天本文就来跟大家聊聊大数据跟区块链这方面的知识 以供大家
  • HTTP服务器

    HTTP服务器 一 HTTP服务器概述 1 HTTP服务器分类 1 1 JBOSS服务器 1 2 Glassfish服务器 1 3 Weblogic服务器 1 4 Websphere服务器 1 5 Tomcat服务器 1 5 1 Tomca
  • 安装命令 - install

    说明 Linux C C 项目构建过程 有个必要的步骤 install 在Makefile中时常会有一个专门的recipe来做这件事 安装流程需要做以下类型事情 文件的拷贝 最基本 目录结构的创建 程序的strip 文件的属性 权限 owe
  • 将GB2312编码的字符串转换为ISO-8859-1编码的字符串

    例如 String s1 你好 String s2 new String s1 getBytes GB2312 ISO 8859 1
  • PyTorch确保每次复现结果一样

    在代码最前面加入已下代码 torch manual seed seed torch cuda manual seed seed torch cuda manual seed all seed if you are using multi G
  • JAVA中的深情哥-Exception(异常)-上

    文章目录 目录 文章目录 前言 一 Exception的起源 二 异常类 三 自定义异常 总结 前言 大家好 我是最爱吃兽奶 今天给大家介绍一下java中的深情哥 Exception 秋风依依秋水寒 一点离愁两黯然 今生默默唯轻舞 为卿踏破
  • es6查根据对象的某个字段查找到值

    前言 es6查根据对象的某个字段查找到值 实现效果 var 新数组 旧数组 filter item gt item value 0 var arr value 0 label 建筑企业资质 value 1 label 承装 修 试 valu
  • KindEditor在php环境下上传图片功能集成

    KindEditor 是一套开源的在线HTML编辑器 后台可与 Java NET PHP ASP 等程序集成 为实现图文混排的编辑效果 我们通常都会用到编辑器的图片上传功能 本文会简单讲一下KinEditor的基本使用 主要说明如何在php
  • nodejs以太坊Dapp开发中文资料收集(精选版)

    区块链技术是趋势 会Nodejs 想做区块链相关 选择了以太坊这个平台 网上资料虽然多少能搜到 但是鱼龙混杂 重复错误百出 不够系统 在几天的搜寻筛选之后 整理了以下中文以太坊智能合约开发资料 有不足或者补充的请留言 互相交流共同进步 1
  • C/C++ 两个感叹号连用

    两个 是为了把非0值转换成1 而0值还是0 如下表 0 1 0 1 0 1 10 0 1
  • 无代码开发和低代码开发的本质区别

    目录 一 两者的概念区别 二 两者面向的人群不同 三 集成能力的区别 四 扩展能力的区别 五 选购建议 无代码和低代码开发都是目前新兴的一种软件开发方式 一 两者的概念区别 低代码开发 Low Code Development 是一种通过使
  • linux下的mtd

    通过 proc虚拟文件系统读取MTD分区表 cat proc mtd 具体由linux drivers mtd下的mtdcore c文件中的mtd read proc函数来实现 读出来的结果类似如下 dev size erasesize n
  • 特殊的喜好

    喜好测试是一种测试气味 您在其中断言某些内容与测试内容无关 例如 在运行时更改其安排集合的算法时 尝试声明集合中项目的顺序可能会导致失望 同样 断言错误消息的确切测试 除非是测试消息的构造 否则如果以某种测试不关心的方式改进消息 则可能导致
  • MySQL第六讲 MySQL分库分表方案

    分库分表概念 分库分表就是业务系统将数据写请求分发到master节点 而读请求分发到slave 节点的一种方案 可以大大提高整个数据库集群的性能 但是要注意 分库分表的 一整套逻辑全部是由客户端自行实现的 而对于MySQL集群 数据主从同步
  • LLDB 常用命令

    LLDB 小结 简介 LLDB 是新一代高性能调试器 其是一组可重用组件的集合 这些组件大多是 LLVM 工程中的类库 如 Clang 表达式解析器或 LLVM 反汇编程序等 LLDB 是 Xcode 中默认的调试器 并且支持调试 C C
  • complier之stack machine with one register

    place holder
  • python 报错汇总【持续更新中....】

    1 Variable encoder embedding encoder already exists disallowed 总结 由于跑的翻译模型需要构建两个embed 一直报这个错误 InvalidArgumentError see a