Comments (11)
这是TorchText升级后更改了API导致的。有两个办法:
- 遇到 itos 的地方调用
itos = vocab.get_itos()
,遇到 stoi 的地方调用stoi = vocab.get_stoi()
。我没有试过这种方案,你可以试试。Ref: https://stackoverflow.com/questions/68743912/vocab-object-has-no-attribute-itos - 降级TorchText。我所用的版本是0.9.1:
pip install torchtext==0.9.1
from nlp-poet.
谢谢!第二个方法解决了问题(不过现在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.
噢,确实是我改代码时没有改完。
如果你想用图形界面,可以运行 testui.py ;
如果你想用命令行交互,可以把 uientry.py 的第104行(main部分的第一句)改成 model = Mode_LSTM(<模式名字>, <保存的模型位置>)
,比如 model = Mode_LSTM('五言律诗', 'wuyanlvshi_final_model.pt')
。
from nlp-poet.
诶可是uientry.py这个我已经改了,main的第一句和上面line 88我也去掉了其他的,只保留了modes = [Mode('五言律诗', 'wuyanlvshi_final_model.pt')],可是还是出现了上面的问题。
同时我也试了testui.py但是我的mac和windows电脑都遇见了无法install PyQT5的问题。(pip 和conda都不可以,指定version也不可以)很抱歉我问题有些多。
from nlp-poet.
对不起那个testui.py我用jupyter notebook运行就没问题了,谢谢!可是我还是想问下uientry.py的PoetModel' object has no attribute 'generate_square_subsequent_mask 应该怎么解决啊
from nlp-poet.
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.
谢谢!已经完全可以运行通了!抱歉我还有个问题就是您推荐运行多少epoch呢?我运行了100个然后如下是我的结果,感觉有些没训练的很好,而且效果和epoch=20的差不多?:
春风不相见,
潮下有谁期。
带云不相见,
雨落东山流。
晚暮不相见,
来来无所思。
急来无一事,
夜暮不相思。
from nlp-poet.
是的,epoch=50之后就差不多了,而且写出来的都是一些有古诗味但不知所言的诗句。我觉得这不是训练次数的问题,而是这个模型不太适合写诗的任务。具体来说,一是LSTM可能不适合这种创作性的预测任务,更适合比较确定的序列预测;二是这个模型只对诗句做了简单的Embedding,可能没有编码诗句内的语义信息;三是模型训练时用了交叉熵作为损失函数,可能不适合这种创作性的任务。总而言之,目前的效果接近模型上限,调整训练次数应该不会有很大的改观。
from nlp-poet.
好的谢谢!非常感谢您的帮助!(原来你也玩原神,官服的话要不要加个好友)
from nlp-poet.
哈哈哈没事,我现在基本退坑了,一个月只上两天打打深渊那种
from nlp-poet.
哦哦哦好的好的,谢谢大佬!
from nlp-poet.
Related Issues (1)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nlp-poet.