一、准备

官网:http://opennmt.net/

python+torch版Github:https://github.com/OpenNMT/OpenNMT-py

python+torch版说明:http://zh.opennmt.net/OpenNMT-py/main.html

环境:ubuntu+python3+torch

需求:将图片公式转化为latex格式的半结构化字符串

案例:http://zh.opennmt.net/OpenNMT-py/im2text.html

二、过程

1.Download the data.

wget -O data/im2text.tgz http://lstm.seas.harvard.edu/latex/im2text_small.tgz; tar zxf data/im2text.tgz -C data/

2.Preprocess the data.

python3 preprocess.py -data_type img -src_dir data/im2text/images/ -train_src data/im2text/src-train.txt -train_tgt data/im2text/tgt-train.txt -valid_src data/im2text/src-val.txt -valid_tgt data/im2text/tgt-val.txt -save_data data/im2text/demo -tgt_seq_length 150 -tgt_words_min_frequency 2 -shard_size 500 -image_channel_size 1

3.Train the model.

nohup python3 train.py -model_type img -data data/im2text/demo -save_model demo-model -gpu_ranks 0 -batch_size 20 -max_grad_norm 20 -learning_rate 0.1 -word_vec_size 80 -encoder_type brnn -image_channel_size 1 &

4.Translate the images.

python3 translate.py -data_type img -model demo-model_step_*.pt -src_dir data/im2text/images -src data/im2text/src-test.txt -output pred.txt -max_length 150 -beam_size 5 -gpu 0 -verbose -image_channel_size 1

注意:-image_channel_size要设置,和前面两个步骤一致,否则会默认为3。

三、问题

问题1:

fjs@gpu1:~/OpenNMT-py$ python3 translate.py -data_type img -model demo-model_step_*.pt -src_dir data/im2text/images \
>                     -src data/im2text/src-test.txt -output pred.txt -max_length 150 -beam_size 5 -gpu 0 -verbose
Traceback (most recent call last):File "translate.py", line 33, in <module>main(opt)File "translate.py", line 14, in maintranslator = build_translator(opt, report_score=True)File "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 31, in build_translatorfields, model, model_opt = load_test_model(opt, dummy_opt.__dict__)File "/home/fjs/OpenNMT-py/onmt/decoders/ensemble.py", line 135, in load_test_model'Ensemble models must use the same preprocessed data'
AssertionError: Ensemble models must use the same preprocessed data

处理:在onmt/decoders/ensemble.py中注释点assert,这个不知有何影响,暂无法明确。

问题2:

fjs@gpu1:~/OpenNMT-py$ python3 translate.py -data_type img -model demo-model_step_*.pt -src_dir data/im2text/images                     -src data/im2text/src-test.txt -output pred.txt -max_length 150 -beam_size 5 -gpu 0 -verbose -image_channel_size 1
/usr/local/lib/python3.5/dist-packages/torchtext/data/field.py:359: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).var = torch.tensor(arr, dtype=self.dtype, device=device)
Traceback (most recent call last):File "translate.py", line 33, in <module>main(opt)File "translate.py", line 19, in mainattn_debug=opt.attn_debug)File "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 205, in translatebatch, data, attn_debug, fast=self.fastFile "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 309, in translate_batchreturn self._translate_batch(batch, data)File "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 621, in _translate_batchbatch, data_type)File "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 322, in _run_encoder'Ensemble decoding only supported for text data'
AssertionError: Ensemble decoding only supported for text data

是onmt/translate/translator.py的提示,增加代码如下:

问题3:

fjs@gpu1:~/OpenNMT-py$ python3 translate.py -data_type img -model demo-model_step_*.pt -src_dir data/im2text/images  -src data/im2text/src-test.txt -output pred.txt -max_length 150 -beam_size 5 -gpu 0 -verbose -image_channel_size 1
/usr/local/lib/python3.5/dist-packages/torchtext/data/field.py:359: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).var = torch.tensor(arr, dtype=self.dtype, device=device)
Traceback (most recent call last):File "translate.py", line 33, in <module>main(opt)File "translate.py", line 19, in mainattn_debug=opt.attn_debug)File "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 205, in translatebatch, data, attn_debug, fast=self.fastFile "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 309, in translate_batchreturn self._translate_batch(batch, data)File "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 646, in _translate_batchmemory_bank = tuple(tile(x, beam_size, dim=1) for x in memory_bank)File "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 646, in <genexpr>memory_bank = tuple(tile(x, beam_size, dim=1) for x in memory_bank)File "/home/fjs/OpenNMT-py/onmt/utils/misc.py", line 42, in tile.transpose(0, 1) \
RuntimeError: CUDA out of memory. Tried to allocate 435.00 MiB (GPU 0; 10.92 GiB total capacity; 9.64 GiB already allocated; 355.50 MiB free; 376.90 MiB cached)

调整执行参数:-beam_size 3

问题4:

fjs@gpu1:~/OpenNMT-py$ python3 translate.py -data_type img -model demo-model_step_*.pt -src_dir data/im2text/images  -src data/im2text/src-test.txt -output pred.txt -max_length 150 -beam_size 3 -gpu 0 -verbose -image_channel_size 1
/usr/local/lib/python3.5/dist-packages/torchtext/data/field.py:359: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).var = torch.tensor(arr, dtype=self.dtype, device=device)
Traceback (most recent call last):File "translate.py", line 33, in <module>main(opt)File "translate.py", line 19, in mainattn_debug=opt.attn_debug)File "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 205, in translatebatch, data, attn_debug, fast=self.fastFile "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 309, in translate_batchreturn self._translate_batch(batch, data)File "/home/fjs/OpenNMT-py/onmt/translate/translator.py", line 649, in _translate_batchmemory_lengths = tile(src_lengths, beam_size)File "/home/fjs/OpenNMT-py/onmt/utils/misc.py", line 32, in tileperm = list(range(len(x.size())))
AttributeError: 'int' object has no attribute 'size'

未解决?

开源库OpenNMT-py使用记录相关推荐

  1. Google开源库Image Captioning部署记录

    Github库:https://github.com/tensorflow/models/tree/master/research/im2txt 场景:给一张图片,描述图片内容.如下图: 环境:ubu ...

  2. 在别的地方看的给程序员介绍一些C++开源库,记录给大家共同学习

    在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习 首先说明这篇文章不是出自我手,大家共同学习. 引用地址:http://oss.org.cn/?actio ...

  3. librtmp开源库与android平台编译记录

    一.编写目的 为了记录编译librtmp开源库过程遇到的问题,帮助后来人提供参考,希望本文能为大家提供参考. 二.简介(官方介绍) The Real-Time Messaging Protocol ( ...

  4. 记录几个Qt开源库界面库

    QT 开源类库集合_Vinx Blog-CSDN博客_qt开源控件库https://blog.csdn.net/u011471873/article/details/108221797 QT 开源类库 ...

  5. 伯乐:一个易用、强大的PyTorch推荐系统开源库

    来源:RUC AI Box 本文约3500字,建议阅读5分钟 4类53个模型,27个数据集,又一推荐系统神器! [ 导读 ]是否还在为推荐模型无法复现而怀疑人生?是否还在为不知如何入门推荐而踌躇不前? ...

  6. 软件经验|GDAL空间数据开源库开发介绍

    GDAL(Geospatial Data Abstraction Library)是使用C/C++语言编写的用于读写空间数据的一套跨平台开源库.GDAL库可以读取.写入.转换.处理各种栅格数据格式,它 ...

  7. 人脸检测和识别的开源库总结

    背景 人脸相关的任务有以下几种: 人脸检测(将图片中包含的人脸进行初步定位,以及关键点如眼睛.鼻子.嘴巴等更精细的定位,文章封面即为典型人脸检测结果): 人脸跟踪(视频中跟踪人脸位置变化): 人脸验证 ...

  8. Python 开源库及示例代码

    Python 开源库及示例代码 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) ...

  9. 利用人工智能(Magpie开源库)给一段中文的文本内容进行分类打标签

    当下人工智能是真心的火热呀,各种原来传统的业务也都在尝试用人工智能技术来处理,以此来节省人工成本,提高生产效率.既然有这么火的利器,那么我们就先来简单认识下什么是人工智能吧,人工智能是指利用语音识别. ...

  10. 常用C/C++开源库

    1. 框架 Apache C++ Standard Library : 是一系列算法,容器,迭代器和其他基本组件的集合 ASL : Adobe源代码库提供了同行的评审和可移植的C++源代码库. Boo ...

最新文章

  1. Android Market 链接的生成与分享
  2. python随机补边缘border
  3. SAP启用检查双重Invoice功能
  4. chromebook刷机_如何在Chromebook上拍照
  5. apache camel_Apache Camel的性能调整思路
  6. 用于RIA的JavaFX 2与HTML5
  7. ad file type not recognised_Java实用工具类:File工具类方法学习,可创建目录及文件...
  8. 变量声明方式:let与var的区别
  9. es-head 删除INDEX 创建mapping
  10. 【Flink】Object Reuse 模式(Stream API) 性能优化 chain 数据重用 不深拷贝
  11. J2EE实战开发Android项目视频教程
  12. 王国纪元服务器不稳定,王国纪元闪退怎么解决 游戏闪退解决方法
  13. 熊猫可用人脸识别?大熊猫迎来熊生高光时刻,以后终于可以认清我了
  14. android 日历折叠,可折叠的日历控件Calendar
  15. python程序设计课程设计二级减速器_机械设计课程设计(二级减速器)-二级齿轮减速器课程设计...
  16. 第18章 基于物理的渲染
  17. 流行编曲(6)副旋律&合声
  18. 网络:简述计算机网络的性能指标和非性能特征
  19. HTML .CSS实现商品详情(detail)
  20. IP Camera 基础知识

热门文章

  1. Linux下Shell脚本实战之监测磁盘空间
  2. louvian算法 缺点 优化_机器学习中的优化算法(1)-优化算法重要性,SGD,Momentum(附Python示例)...
  3. sqlyog怎么连接mysql_Mysql数据库连接过高,怎么快速杀掉连接
  4. 基于cobbler实现自动安装系统
  5. electron——初探
  6. 简洁的描述SpringMVC工作流程
  7. JavaCV 学习(一):JavaCV 初体验
  8. Java NIO:IO与NIO的区别
  9. Software Testing Homework03:
  10. Beta版冲刺Day1