How to feed multiple input arrays with different dimensions into a deep neural network model

19 views
Skip to first unread message

msabda...@gmail.com

unread,
Sep 12, 2019, 10:27:28 AM9/12/19
to Chainer User Group
Good day All,

I'm building a deep recurent network-like model for signal processing using chainer. The training data as well as the testset data are prepared using "TupleDataset" method as: train_data = TupleDataset(x, indices, y, x_zf, HtH, Hty), where the dimensions of the inputs are respectively: (100000, 10), (100000, 10), (100000, 4), (100000, 10), (100000, 10, 10) and (100000, 10). Here, the number of examples is 100000 from which the minibatches are obtained. Waht I'm not clear about is that why must other dimensions be the same? The following is the error it returned:

Exception in main training loop: all the input arrays must have same number of dimensions
Traceback (most recent call last):
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/training/trainer.py", line 316, in run
Ā  Ā  update
()
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 175, in update
Ā  Ā 
self.update_core()
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 181, in update_core
Ā  Ā  in_arrays
= convert._call_converter(self.converter, batch, self.device)
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/dataset/convert.py", line 73, in _call_converter
Ā  Ā 
return converter(batch, device)
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/dataset/convert.py", line 58, in wrap_call
Ā  Ā 
return func(*args, **kwargs)
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/dataset/convert.py", line 223, in concat_examples
Ā  Ā 
[example[i] for example in batch], padding[i])))
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/dataset/convert.py", line 254, in _concat_arrays
Ā  Ā 
[array[None] for array in arrays])
Will finalize trainer extensions and updater before reraising the exception.
[JTraceback (most recent call last):
Ā 
File "/Users/mac/Documents/idp_detnet/examples/run_mlp.py", line 14, in <module>
Ā  Ā  mlp
.run(args)
Ā 
File "/Users/mac/Documents/idp_detnet/examples/mlp.py", line 38, in run
Ā  Ā  util
.load_or_train_model(model, train, test, args)
Ā 
File "/Users/mac/Documents/idp_detnet/examples/util.py", line 209, in load_or_train_model
Ā  Ā  train_model
(model, train, test, args)
Ā 
File "/Users/mac/Documents/idp_detnet/examples/util.py", line 183, in train_model
Ā  Ā  trainer
.run()
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/training/trainer.py", line 349, in run
Ā  Ā  six
.reraise(*exc_info)
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/six.py", line 693, in reraise
Ā  Ā 
raise value
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/training/trainer.py", line 316, in run
Ā  Ā  update
()
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 175, in update
Ā  Ā 
self.update_core()
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 181, in update_core
Ā  Ā  in_arrays
= convert._call_converter(self.converter, batch, self.device)
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/dataset/convert.py", line 73, in _call_converter
Ā  Ā 
return converter(batch, device)
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/dataset/convert.py", line 58, in wrap_call
Ā  Ā 
return func(*args, **kwargs)
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/dataset/convert.py", line 223, in concat_examples
Ā  Ā 
[example[i] for example in batch], padding[i])))
Ā 
File "/Users/mac/miniconda3/lib/python3.6/site-packages/chainer/dataset/convert.py", line 254, in _concat_arrays
Ā  Ā 
[array[None] for array in arrays])
ValueError: all the input arrays must have same number of dimen

Please I need your help, because I have been on this issue for over three months and searched everywhere for possible solutions, but without sucess.

Thank you,
Abdullahi

Kenichi Maehashi

unread,
Sep 30, 2019, 1:38:26 AM9/30/19
to Chainer User Group
The default `converter` of StandardUpdater is `concat_example`, which concatenates inputs into NumPy/CuPy array, which requires the same dimensions for all inputs.


Please refer to the examples using custom converter, e.g.:
Reply all
Reply to author
Forward
0 new messages