pytorch-sentiment-analysis
pytorch-sentiment-analysis copied to clipboard
from ignite.engine import Events ImportError: No module named engine
[jalal@goku pytorch-sentiment-analysis]$ python run.py --model_config config/cnn_rnn.yml --epochs 50 --model_dir sentiment-analysis.pt --dataset data/sentiment
Traceback (most recent call last):
File "run.py", line 8, in <module>
from ignite.engine import Events
ImportError: No module named engine
[jalal@goku pytorch-sentiment-analysis]$ conda list ignite
# packages in environment at /scratch/sjn-p2/anaconda/anaconda2:
#
# Name Version Build Channel
ignite 0.1.0a1 <pip>
[jalal@goku pytorch-sentiment-analysis]$ python -V
Python 2.7.14 :: Anaconda custom (64-bit)
Then I git cloned ignite instead of pip-ing it and still same error
[jalal@goku pytorch-sentiment-analysis]$ git clone https://github.com/pytorch/ignite.git
Cloning into 'ignite'...
remote: Counting objects: 704, done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 704 (delta 53), reused 91 (delta 46), pack-reused 594
Receiving objects: 100% (704/704), 190.36 KiB | 0 bytes/s, done.
Resolving deltas: 100% (349/349), done.
[jalal@goku pytorch-sentiment-analysis]$ pip uninstall ignite
Uninstalling ignite-0.1.0a1:
Would remove:
/scratch/sjn-p2/anaconda/anaconda2/lib/python2.7/site-packages/ignite-0.1.0a1.dist-info/*
/scratch/sjn-p2/anaconda/anaconda2/lib/python2.7/site-packages/ignite/*
Proceed (y/n)? y
Successfully uninstalled ignite-0.1.0a1
[jalal@goku pytorch-sentiment-analysis]$ python run.py --model_config config/cnn_rnn.yml --epochs 50 --model_dir sentiment-analysis.pt --dataset data/sentiment
Traceback (most recent call last):
File "run.py", line 8, in <module>
from ignite.engine import Events
ImportError: No module named ignite.engine
After I installed it from
https://github.com/pytorch/ignite
I get this error
[jalal@goku ignite]$ python setup.py install
running install
running bdist_egg
running egg_info
creating ignite.egg-info
writing requirements to ignite.egg-info/requires.txt
writing ignite.egg-info/PKG-INFO
writing top-level names to ignite.egg-info/top_level.txt
writing dependency_links to ignite.egg-info/dependency_links.txt
writing manifest file 'ignite.egg-info/SOURCES.txt'
reading manifest file 'ignite.egg-info/SOURCES.txt'
writing manifest file 'ignite.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/ignite
copying ignite/__init__.py -> build/lib/ignite
copying ignite/_utils.py -> build/lib/ignite
copying ignite/exceptions.py -> build/lib/ignite
creating build/lib/ignite/engines
copying ignite/engines/__init__.py -> build/lib/ignite/engines
copying ignite/engines/engine.py -> build/lib/ignite/engines
creating build/lib/ignite/handlers
copying ignite/handlers/__init__.py -> build/lib/ignite/handlers
copying ignite/handlers/checkpoint.py -> build/lib/ignite/handlers
copying ignite/handlers/early_stopping.py -> build/lib/ignite/handlers
copying ignite/handlers/timing.py -> build/lib/ignite/handlers
creating build/lib/ignite/metrics
copying ignite/metrics/__init__.py -> build/lib/ignite/metrics
copying ignite/metrics/binary_accuracy.py -> build/lib/ignite/metrics
copying ignite/metrics/categorical_accuracy.py -> build/lib/ignite/metrics
copying ignite/metrics/loss.py -> build/lib/ignite/metrics
copying ignite/metrics/mean_absolute_error.py -> build/lib/ignite/metrics
copying ignite/metrics/mean_pairwise_distance.py -> build/lib/ignite/metrics
copying ignite/metrics/mean_squared_error.py -> build/lib/ignite/metrics
copying ignite/metrics/metric.py -> build/lib/ignite/metrics
copying ignite/metrics/precision.py -> build/lib/ignite/metrics
copying ignite/metrics/recall.py -> build/lib/ignite/metrics
copying ignite/metrics/root_mean_squared_error.py -> build/lib/ignite/metrics
copying ignite/metrics/top_k_categorical_accuracy.py -> build/lib/ignite/metrics
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/ignite
copying build/lib/ignite/__init__.py -> build/bdist.linux-x86_64/egg/ignite
copying build/lib/ignite/_utils.py -> build/bdist.linux-x86_64/egg/ignite
copying build/lib/ignite/exceptions.py -> build/bdist.linux-x86_64/egg/ignite
creating build/bdist.linux-x86_64/egg/ignite/engines
copying build/lib/ignite/engines/__init__.py -> build/bdist.linux-x86_64/egg/ignite/engines
copying build/lib/ignite/engines/engine.py -> build/bdist.linux-x86_64/egg/ignite/engines
creating build/bdist.linux-x86_64/egg/ignite/handlers
copying build/lib/ignite/handlers/__init__.py -> build/bdist.linux-x86_64/egg/ignite/handlers
copying build/lib/ignite/handlers/checkpoint.py -> build/bdist.linux-x86_64/egg/ignite/handlers
copying build/lib/ignite/handlers/early_stopping.py -> build/bdist.linux-x86_64/egg/ignite/handlers
copying build/lib/ignite/handlers/timing.py -> build/bdist.linux-x86_64/egg/ignite/handlers
creating build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/__init__.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/binary_accuracy.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/categorical_accuracy.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/loss.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/mean_absolute_error.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/mean_pairwise_distance.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/mean_squared_error.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/metric.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/precision.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/recall.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/root_mean_squared_error.py -> build/bdist.linux-x86_64/egg/ignite/metrics
copying build/lib/ignite/metrics/top_k_categorical_accuracy.py -> build/bdist.linux-x86_64/egg/ignite/metrics
byte-compiling build/bdist.linux-x86_64/egg/ignite/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/_utils.py to _utils.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/exceptions.py to exceptions.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/engines/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/engines/engine.py to engine.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/handlers/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/handlers/checkpoint.py to checkpoint.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/handlers/early_stopping.py to early_stopping.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/handlers/timing.py to timing.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/binary_accuracy.py to binary_accuracy.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/categorical_accuracy.py to categorical_accuracy.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/loss.py to loss.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/mean_absolute_error.py to mean_absolute_error.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/mean_pairwise_distance.py to mean_pairwise_distance.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/mean_squared_error.py to mean_squared_error.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/metric.py to metric.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/precision.py to precision.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/recall.py to recall.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/root_mean_squared_error.py to root_mean_squared_error.pyc
byte-compiling build/bdist.linux-x86_64/egg/ignite/metrics/top_k_categorical_accuracy.py to top_k_categorical_accuracy.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying ignite.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying ignite.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying ignite.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying ignite.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying ignite.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying ignite.egg-info/zip-safe -> build/bdist.linux-x86_64/egg/EGG-INFO
creating dist
creating 'dist/ignite-0.1.0a1-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing ignite-0.1.0a1-py2.7.egg
Copying ignite-0.1.0a1-py2.7.egg to /scratch/sjn-p2/anaconda/anaconda2/lib/python2.7/site-packages
Adding ignite 0.1.0a1 to easy-install.pth file
Installed /scratch/sjn-p2/anaconda/anaconda2/lib/python2.7/site-packages/ignite-0.1.0a1-py2.7.egg
Processing dependencies for ignite==0.1.0a1
Searching for torch==0.3.1.post2
Best match: torch 0.3.1.post2
Adding torch 0.3.1.post2 to easy-install.pth file
Using /scratch/sjn-p2/anaconda/anaconda2/lib/python2.7/site-packages
Searching for enum34==1.1.6
Best match: enum34 1.1.6
Adding enum34 1.1.6 to easy-install.pth file
Using /scratch/sjn-p2/anaconda/anaconda2/lib/python2.7/site-packages
Searching for numpy==1.14.1
Best match: numpy 1.14.1
Adding numpy 1.14.1 to easy-install.pth file
Using /scratch/sjn-p2/anaconda/anaconda2/lib/python2.7/site-packages
Searching for PyYAML==3.12
Best match: PyYAML 3.12
Adding PyYAML 3.12 to easy-install.pth file
Using /scratch/sjn-p2/anaconda/anaconda2/lib/python2.7/site-packages
Finished processing dependencies for ignite==0.1.0a1
[jalal@goku ignite]$ cd ..
[jalal@goku sentiment]$ cd pytorch
pytorch-sentiment-analysis/ pytorch_sentiment_rnn/
[jalal@goku sentiment]$ cd pytorch
pytorch-sentiment-analysis/ pytorch_sentiment_rnn/
[jalal@goku sentiment]$ cd pytorch-sentiment-analysis/
[jalal@goku pytorch-sentiment-analysis]$ ls
README.md Sentiment-Analysis-Dataset.zip config dataset hooks.py model.py preprocessing.py requirements.txt run.py utils.py vocab.py
[jalal@goku pytorch-sentiment-analysis]$ python run.py --model_config config/cnn_rnn.yml --epochs 50 --model_dir sentiment-analysis.pt --dataset data/sentiment
Traceback (most recent call last):
File "run.py", line 8, in <module>
from ignite.engine import Events
ImportError: No module named engine
Hi @monajalal, thanks reporting the issue! It seems that the API has changed from ignite, will try to update it with new API as soon as I can!
Thanks a lot.
Hi @monajalal, happy to tell you that I have fixed the error and now I have updated the requirement to pytorch 0.4 in order to run it. If you still facing the same problem even with pytorch 0.4.0, don't hesitate to let me know, thanks!
Hi @akurniawan, I met the same problem here. I am using pytorch 0.4, but still it reports:
weixin@weixin-All-Series:~/PycharmProjects/csming/pytorch-sentiment-analysis-master$ python run.py --model_config config/cnn_rnn.yml --epochs 50 --model_dir models --dataset data/1 Traceback (most recent call last): File "run.py", line 8, in
from ignite.engines import Events, Engine ImportError: No module named engines
By referring to the documentation, it seems that it might be "ignite.engine" instead of "ignite.engines". Then I met another problem:
Traceback (most recent call last): File "run.py", line 10, in
from ignite.metrics import CategoricalAccuracy, Precision, Recall File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/metrics/init.py", line 1, in from ignite.metrics.binary_accuracy import BinaryAccuracy File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/metrics/binary_accuracy.py", line 5, in from ignite.metrics.metric import Metric File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/metrics/metric.py", line 8, in class Metric(object): File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/metrics/metric.py", line 65, in Metric @torch.no_grad() TypeError: 'no_grad' object is not callable
Do you know how to fix this one? Many thanks, Weixin.
Hi @DexterZeng, I can run the code just fine after changing from ignite.engines import Engine to from ignite.engine import Engine. Though, my pytorch version is currently 0.4.1. Can you try to upgrade the version first and let me know if you still facing the same problem? Thanks!
Hi @akurniawan, thank you for your reply. After I upgraded pytorch to 0.4.1, the previous problem was solved. However, it still reported an error:
WARNING:root:File 'models/sentiment-*.pth' is not found, skip restoring model ERROR:ignite.engine.engine.Engine:Current run is terminating due to exception: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first. ERROR:ignite.engine.engine.Engine:Engine run is terminating due to exception: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first. Traceback (most recent call last): File "run.py", line 184, in
trainer.run(train_iter, max_epochs=ARGS.epochs) File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/engine/engine.py", line 306, in run self._handle_exception(e) File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/engine/engine.py", line 271, in _handle_exception raise e TypeError: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
Then I changed .numpy() in line 111 and 123 in run.py to .cpu().numpy(), it reported another error:
WARNING:root:File 'models/sentiment-*.pth' is not found, skip restoring model ERROR:ignite.engine.engine.Engine:Current run is terminating due to exception: sizes must be non-negative ERROR:ignite.engine.engine.Engine:Engine run is terminating due to exception: sizes must be non-negative Traceback (most recent call last): File "run.py", line 184, in
trainer.run(train_iter, max_epochs=ARGS.epochs) File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/engine/engine.py", line 306, in run self._handle_exception(e) File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/engine/engine.py", line 271, in _handle_exception raise e RuntimeError: sizes must be non-negative
Then I realized I used my own dataset, which reads like:
5,i like it 2,i hate it ...
Is there something wrong with my dataset or ? P.S. The link [4] seems to be invaild.
Hi @DexterZeng, sorry I just get back to you. I have push the fix for .cpu() in run.py as you reported and also fix the link to the correct dataset.
Regarding your problem, is it possible that your dataset is not correctly formatted? Such as:
- There exist a
,and the field is not quoted by"". For example5,hi, how are you?. The csv parser will split the line as an array with three contents where there should only be two. - This one I'm not really sure but possible, an empty line "". I don't know how the parser behave if your data looks like this
5,i like it
2, i hate it
""
3, i like it
Hi @akurniawan, thank you for your response. Although I have downloaded your dataset and used it, an error was still raised:
ERROR:ignite.engine.engine.Engine:Current run is terminating due to exception: sizes must be non-negative ERROR:ignite.engine.engine.Engine:Engine run is terminating due to exception: sizes must be non-negative Traceback (most recent call last): File "run.py", line 183, in
trainer.run(train_iter, max_epochs=ARGS.epochs) File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/engine/engine.py", line 306, in run self._handle_exception(e) File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/engine/engine.py", line 271, in _handle_exception raise e RuntimeError: sizes must be non-negative
Any idea what is going on? Thanks.
Hi @DexterZeng, can you try this one? https://drive.google.com/file/d/1-1QNrYebNxge9vMP7YJJceehQkZtqAcO
Hi @akurniawan , it works fine until the very end:
Epoch[1] Iteration[9900/10000] Loss: 0.54 Epoch[1] Iteration[10000/10000] Loss: 0.51 /home/weixin/anaconda2/lib/python2.7/site-packages/torchtext/data/field.py:321: UserWarning: volatile was removed and now has no effect. Use
with torch.no_grad():instead. return Variable(arr, volatile=not train), lengths /home/weixin/anaconda2/lib/python2.7/site-packages/torchtext/data/field.py:322: UserWarning: volatile was removed and now has no effect. Usewith torch.no_grad():instead. return Variable(arr, volatile=not train) ERROR:ignite.engine.engine.Engine:Current run is terminating due to exception: sizes must be non-negative ERROR:ignite.engine.engine.Engine:Engine run is terminating due to exception: sizes must be non-negative ERROR:ignite.engine.engine.Engine:Engine run is terminating due to exception: sizes must be non-negative Traceback (most recent call last): File "run.py", line 183, intrainer.run(train_iter, max_epochs=ARGS.epochs) File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/engine/engine.py", line 306, in run self._handle_exception(e) File "/home/weixin/anaconda2/lib/python2.7/site-packages/ignite/engine/engine.py", line 271, in _handle_exception raise e RuntimeError: sizes must be non-negative
Do you have any idea what causes this error? Thanks.
Hi @DexterZeng, sorry again for the late reply. Are you using cnn based model? If yes then I suspect there are words that quite short so that even the smallest filter in cnn can't afford travel through it.