日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开源库OpenNMT-py使用记录

發布時間:2025/4/16 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开源库OpenNMT-py使用记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、準備

官網: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使用记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。