pytorch-sentiment-analysis icon indicating copy to clipboard operation
pytorch-sentiment-analysis copied to clipboard

from ignite.engine import Events ImportError: No module named engine

Open monajalal opened this issue 7 years ago • 11 comments

[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


monajalal avatar Apr 20 '18 02:04 monajalal

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!

akurniawan avatar Apr 20 '18 03:04 akurniawan

Thanks a lot.

monajalal avatar Apr 20 '18 03:04 monajalal

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!

akurniawan avatar Apr 30 '18 13:04 akurniawan

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.

DexterZeng avatar Aug 30 '18 03:08 DexterZeng

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!

akurniawan avatar Sep 01 '18 12:09 akurniawan

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.

DexterZeng avatar Sep 03 '18 09:09 DexterZeng

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:

  1. There exist a , and the field is not quoted by "". For example 5,hi, how are you?. The csv parser will split the line as an array with three contents where there should only be two.
  2. 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

akurniawan avatar Sep 08 '18 05:09 akurniawan

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.

DexterZeng avatar Sep 10 '18 09:09 DexterZeng

Hi @DexterZeng, can you try this one? https://drive.google.com/file/d/1-1QNrYebNxge9vMP7YJJceehQkZtqAcO

akurniawan avatar Sep 12 '18 05:09 akurniawan

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. Use with 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, 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

Do you have any idea what causes this error? Thanks.

DexterZeng avatar Sep 15 '18 04:09 DexterZeng

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.

akurniawan avatar Sep 26 '18 23:09 akurniawan