Coder Social home page Coder Social logo

Comments (11)

iamwyh2019 avatar iamwyh2019 commented on July 20, 2024

这是TorchText升级后更改了API导致的。有两个办法:

  1. 遇到 itos 的地方调用 itos = vocab.get_itos(),遇到 stoi 的地方调用 stoi = vocab.get_stoi()。我没有试过这种方案,你可以试试。Ref: https://stackoverflow.com/questions/68743912/vocab-object-has-no-attribute-itos
  2. 降级TorchText。我所用的版本是0.9.1: pip install torchtext==0.9.1

from nlp-poet.

WangJihan avatar WangJihan commented on July 20, 2024

谢谢!第二个方法解决了问题(不过现在0.9.1不支持了,我downgrade到了0.6.0)。
然而我在运行完成main.py后运行uientry.py时遇到错误:
AttributeError: 'PoetModel' object has no attribute 'generate_square_subsequent_mask'。
log如下:
(base) jihanwang@jihandeMacBook-Air nlp-poet % python3 uientry.py Loading model for 『五言律诗』... 8 城阙辅三秦,风烟望五津。与君离别意,同是宦游人。海内存知己,天涯若比邻。无为在歧路,儿女共沾巾。 Loading model for 『五言律诗』... Head: 春眠不觉晓处处闻 Traceback (most recent call last): File "/Users/jihanwang/Desktop/学习/FYP/nlp-poet/uientry.py", line 105, in <module> output = model.entry(heads) File "/Users/jihanwang/Desktop/学习/FYP/nlp-poet/uientry.py", line 72, in entry input_mask = self.model.generate_square_subsequent_mask(input.shape[0]).to(device) File "/Users/jihanwang/miniforge3/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1207, in __getattr__ raise AttributeError("'{}' object has no attribute '{}'".format( AttributeError: 'PoetModel' object has no attribute 'generate_square_subsequent_mask'

from nlp-poet.

iamwyh2019 avatar iamwyh2019 commented on July 20, 2024

噢,确实是我改代码时没有改完。
如果你想用图形界面,可以运行 testui.py ;
如果你想用命令行交互,可以把 uientry.py 的第104行(main部分的第一句)改成 model = Mode_LSTM(<模式名字>, <保存的模型位置>) ,比如 model = Mode_LSTM('五言律诗', 'wuyanlvshi_final_model.pt')

from nlp-poet.

WangJihan avatar WangJihan commented on July 20, 2024

诶可是uientry.py这个我已经改了,main的第一句和上面line 88我也去掉了其他的,只保留了modes = [Mode('五言律诗', 'wuyanlvshi_final_model.pt')],可是还是出现了上面的问题。
同时我也试了testui.py但是我的mac和windows电脑都遇见了无法install PyQT5的问题。(pip 和conda都不可以,指定version也不可以)很抱歉我问题有些多。

from nlp-poet.

WangJihan avatar WangJihan commented on July 20, 2024

对不起那个testui.py我用jupyter notebook运行就没问题了,谢谢!可是我还是想问下uientry.py的PoetModel' object has no attribute 'generate_square_subsequent_mask 应该怎么解决啊

from nlp-poet.

iamwyh2019 avatar iamwyh2019 commented on July 20, 2024

uientry的问题原因是,我在main部分调用了针对transformer模型的交互代码,transformer相比LSTM多了一个遮罩,所以多一个生成遮罩的过程。你运行main.py训练出来的是LSTM模型,直接运行uientry.py时模式对不上,所以会报错。这一段代码本来没打算用在演示中,只用来debug看看模型效果,所以没有改掉。我不确定你现在uientry.py是什么样的,解决方法就是把 if __name__ == "__main__" 下面一行定义model的语句改成 model = Mode_LSTM(XXXX, XXXX),用LSTM的模式来调用训练出来的模型。或者也可以写成model = Mode(XXXX, XXXX),因为上面把Mode定义成Mode_LSTM,是同一个意思。

我刚刚push了一个版本上去,把uientry.py对应的这一句改了。另外,我写了一个cmdline.py,专门用于通过命令行与训练好的LSTM模型交互,我会推荐你用这个新的代码文件。你只需要把54行(main部分第一句)改成 mode = Mode_LSTM(<你的模型路径>) 就好(不用传name参数)。

from nlp-poet.

WangJihan avatar WangJihan commented on July 20, 2024

谢谢!已经完全可以运行通了!抱歉我还有个问题就是您推荐运行多少epoch呢?我运行了100个然后如下是我的结果,感觉有些没训练的很好,而且效果和epoch=20的差不多?:
春风不相见,
潮下有谁期。
带云不相见,
雨落东山流。
晚暮不相见,
来来无所思。
急来无一事,
夜暮不相思。

from nlp-poet.

iamwyh2019 avatar iamwyh2019 commented on July 20, 2024

是的,epoch=50之后就差不多了,而且写出来的都是一些有古诗味但不知所言的诗句。我觉得这不是训练次数的问题,而是这个模型不太适合写诗的任务。具体来说,一是LSTM可能不适合这种创作性的预测任务,更适合比较确定的序列预测;二是这个模型只对诗句做了简单的Embedding,可能没有编码诗句内的语义信息;三是模型训练时用了交叉熵作为损失函数,可能不适合这种创作性的任务。总而言之,目前的效果接近模型上限,调整训练次数应该不会有很大的改观。

from nlp-poet.

WangJihan avatar WangJihan commented on July 20, 2024

好的谢谢!非常感谢您的帮助!(原来你也玩原神,官服的话要不要加个好友)

from nlp-poet.

iamwyh2019 avatar iamwyh2019 commented on July 20, 2024

哈哈哈没事,我现在基本退坑了,一个月只上两天打打深渊那种

from nlp-poet.

WangJihan avatar WangJihan commented on July 20, 2024

哦哦哦好的好的,谢谢大佬!

from nlp-poet.

Related Issues (1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.