aonotas / deep-crf

An implementation of Conditional Random Fields (CRFs) with Deep Learning Method
http://deep-crf.com
MIT License
167 stars 48 forks source link

Support Python2.x and Python 3.x #22

Closed massongit closed 6 years ago

massongit commented 6 years ago

8

I implemented to support Python2.x and Python 3.x.

However, the following error occurs in Python 3.5 and Chainer v1.24.0 now:

[2017-10-04 20:16:35,868] [INFO] train:2087 (run@main.py:243)
[2017-10-04 20:16:35,869] [INFO] dev  :1426 (run@main.py:244)
[2017-10-04 20:16:35,869] [INFO] test :0 (run@main.py:245)
[2017-10-04 20:16:35,869] [INFO] vocab     :6138 (run@main.py:246)
[2017-10-04 20:16:35,869] [INFO] vocab_tags:32 (run@main.py:247)
[2017-10-04 20:16:35,869] [INFO] unk count (train):130 (run@main.py:248)
[2017-10-04 20:16:35,869] [INFO] unk rate  (train):0.0024291346674888354 (run@main.py:249)
[2017-10-04 20:16:35,869] [INFO] cnt all words (train):53517 (run@main.py:250)
[2017-10-04 20:16:35,869] [INFO] unk count (dev):83 (run@main.py:251)
[2017-10-04 20:16:35,869] [INFO] unk rate  (dev):0.0022682553563620465 (run@main.py:252)
[2017-10-04 20:16:35,869] [INFO] cnt all words (dev):36592 (run@main.py:253)
[2017-10-04 20:16:35,869] [INFO] ###################### (run@main.py:255)
[2017-10-04 20:16:35,869] [INFO] ## Model Config (run@main.py:256)
[2017-10-04 20:16:35,869] [INFO] model_name:bilstm-cnn-crf (run@main.py:257)
[2017-10-04 20:16:35,869] [INFO] batchsize:32 (run@main.py:258)
[2017-10-04 20:16:35,870] [INFO] optimizer:adam (run@main.py:259)
[2017-10-04 20:16:35,870] [INFO] ###################### (run@main.py:261)
[2017-10-04 20:16:35,870] [INFO] ## Model Save Config (run@main.py:262)
[2017-10-04 20:16:35,870] [INFO] save_dir :/home/suzuki/Documents/save_model_dir/ (run@main.py:263)
[2017-10-04 20:16:35,870] [INFO] save_vocab        :/home/suzuki/Documents/save_model_dir/bilstm-cnn-crf_adam.vocab (run@main.py:266)
[2017-10-04 20:16:35,870] [INFO] save_vocab_char   :/home/suzuki/Documents/save_model_dir/bilstm-cnn-crf_adam.vocab_char (run@main.py:267)
[2017-10-04 20:16:35,870] [INFO] save_tags_vocab   :/home/suzuki/Documents/save_model_dir/bilstm-cnn-crf_adam.vocab_tag (run@main.py:268)
[2017-10-04 20:16:35,870] [INFO] save_train_config :/home/suzuki/Documents/save_model_dir/bilstm-cnn-crf_adam.train_config (run@main.py:269)
[2017-10-04 20:16:36,166] [INFO] Lock 140506372007024 acquired on /home/suzuki/.cupy/kernel_cache/lock_file.lock (acquire@filelock.py:248)
[2017-10-04 20:16:36,166] [INFO] Lock 140506372007024 released on /home/suzuki/.cupy/kernel_cache/lock_file.lock (release@filelock.py:311)
[2017-10-04 20:16:36,169] [INFO] Lock 140506371941768 acquired on /home/suzuki/.cupy/kernel_cache/lock_file.lock (acquire@filelock.py:248)
[2017-10-04 20:16:36,169] [INFO] Lock 140506371941768 released on /home/suzuki/.cupy/kernel_cache/lock_file.lock (release@filelock.py:311)
[2017-10-04 20:16:36,171] [INFO] Lock 140506371941768 acquired on /home/suzuki/.cupy/kernel_cache/lock_file.lock (acquire@filelock.py:248)
[2017-10-04 20:16:36,171] [INFO] Lock 140506371941768 released on /home/suzuki/.cupy/kernel_cache/lock_file.lock (release@filelock.py:311)
[2017-10-04 20:16:36,174] [INFO] Lock 140506371941768 acquired on /home/suzuki/.cupy/kernel_cache/lock_file.lock (acquire@filelock.py:248)
[2017-10-04 20:16:36,174] [INFO] Lock 140506371941768 released on /home/suzuki/.cupy/kernel_cache/lock_file.lock (release@filelock.py:311)
[2017-10-04 20:16:36,176] [INFO] Lock 140506371941768 acquired on /home/suzuki/.cupy/kernel_cache/lock_file.lock (acquire@filelock.py:248)
[2017-10-04 20:16:36,176] [INFO] Lock 140506371941768 released on /home/suzuki/.cupy/kernel_cache/lock_file.lock (release@filelock.py:311)
Traceback (most recent call last):
  File "/home/suzuki/.virtualenvs/deep-crf3/bin/deep-crf", line 11, in <module>
    sys.exit(cli())
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/deepcrf/__init__.py", line 60, in train
    main.run(train_file, is_train=True, **args)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/deepcrf/main.py", line 436, in run
    output = net(x_data=x, x_char_data=x_char, x_additional=x_additional)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/deepcrf/bi_lstm.py", line 171, in __call__
    char_vecs = self.char_cnn(x_char_data_flat)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/deepcrf/cnn.py", line 138, in __call__
    char_vecs=char_vecs)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/deepcrf/cnn.py", line 120, in compute_vecs
    word_emb_conv = self.conv(word_embs_reshape)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/chainer/links/connection/convolution_2d.py", line 109, in __call__
    deterministic=self.deterministic)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/chainer/functions/connection/convolution_2d.py", line 417, in convolution_2d
    return func(x, W, b)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/chainer/function.py", line 199, in __call__
    outputs = self.forward(in_data)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/chainer/function.py", line 310, in forward
    return self.forward_gpu(inputs)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/chainer/functions/connection/convolution_2d.py", line 111, in forward_gpu
    y = cuda.cupy.empty((n, out_c, out_h, out_w), dtype=x.dtype)
  File "/home/suzuki/.virtualenvs/deep-crf3/lib/python3.5/site-packages/cupy/creation/basic.py", line 19, in empty
    return cupy.ndarray(shape, dtype=dtype, order=order)
  File "cupy/core/core.pyx", line 70, in cupy.core.core.ndarray.__init__ (cupy/core/core.cpp:6208)
  File "stringsource", line 52, in vector.from_py.__pyx_convert_vector_from_py_Py_ssize_t (cupy/core/core.cpp:83049)
TypeError: 'float' object cannot be interpreted as an integer

I think valiable word_embs_reshape in deepcrf/cnn.py line 120 maybe a cause of this error, but I haven't been able to find a solution yet.

aonotas commented 6 years ago

Oh really? Please tell me your command.

massongit commented 6 years ago

I ran this command: deep-crf train input_file.txt --delimiter=' ' --dev_file input_file_dev.txt --save_name bilstm-cnn-crf_adam --input_idx 0,1,2 --output_idx 3 --gpu 0 --save_dir save_model_dir

I fixed the error. The cause of error is division (For details: Python 3ではまったこと - minus9d's diary (Japanese)).

massongit commented 6 years ago

I implemented to call itertools.izip_longest through the six.moves.

massongit commented 6 years ago

I replaced xrange to six.moves.range.