Work with another network: IndexError
Template
files:
cattle_005_training_config.yml
Setup:
Data related
data_root: /home/pjobic/Work/DNADNA/master/cattle
Format: data_root/scenario_XXX/cattle_NNN_NN.npz
dataset_path_on_titanic: titanic:/home/tau/thsanche/data/cattle/scenario_{0_to_99}
working directory: /home/pjobic/Work/DNADNA/master
Network related
SPIDNA2 specificities:
- n_SNP: not fixed (>= 400)
- n_indiv: not fixed (>= 50)
- batch_size: 1 (can't work with > 1)
Issue
Classic dnadna Process
Here are the steps I did:
Command: dnadna simulation init cattle
=> Then, modified cattle/cattle_simulation_config.yml (useless file for this setup)
Command: dnadna init --simulation-config=cattle/cattle_simulation_config.yml
=> Then, modified cattle/cattle_training_config.yml
(find in attached file)
Command: dnadna --debug preprocess cattle/cattle_training_config.yml
=> Then, modified cattle/run_XXX/cattle_XXX_training_config.yml
(find in attached file)
Command: dnadna --debug train cattle/run_XXX/cattle_XXX_training_config.yml
IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)
dnadna --debug train cattle/run_005/cattle_005_training_config.yml
25/05/2020 16:48:08; INFO; 100 samples in the validation set and 2700 in the training set
25/05/2020 16:48:08; INFO; Start training
25/05/2020 16:48:08; INFO; Starting Epoch #0
epoch 0/1: 0%| | 0/2700 [00:00<?, ?batch/s]
an unexpected error occurred: Dimension out of range (expected to be in range of [-1, 0], but got 1); run again with --debug to view the full traceback
an unexpected error occurred: Dimension out of range (expected to be in range of [-1, 0], but got 1); run again with --debug to view the full traceback
Traceback (most recent call last):
File "/home/pjobic/anaconda3/envs/dnadna/bin/dnadna", line 11, in <module>
load_entry_point('dnadna', 'console_scripts', 'dnadna')()
File "/home/pjobic/Work/DNADNA/master/dnadna/utils/__init__.py", line 820, in main
raise exc
File "/home/pjobic/Work/DNADNA/master/dnadna/utils/__init__.py", line 812, in main
ret2 = cls.run_subcommand(args)
File "/home/pjobic/Work/DNADNA/master/dnadna/utils/__init__.py", line 781, in run_subcommand
return command_cls.main(command[1:], namespace=args)
File "/home/pjobic/Work/DNADNA/master/dnadna/utils/__init__.py", line 820, in main
raise exc
File "/home/pjobic/Work/DNADNA/master/dnadna/utils/__init__.py", line 804, in main
ret = cls.run(args)
File "/home/pjobic/Work/DNADNA/master/dnadna/training.py", line 673, in run
model_trainer.run_training()
File "/home/pjobic/Work/DNADNA/master/dnadna/training.py", line 400, in run_training
best_loss = self.train()
File "/home/pjobic/Work/DNADNA/master/dnadna/training.py", line 385, in train
return best_loss
File "/home/pjobic/Work/DNADNA/master/dnadna/utils/__init__.py", line 403, in __exit__
raise exc_value
File "/home/pjobic/Work/DNADNA/master/dnadna/training.py", line 375, in train
best_loss = self._train_outer_loop(bar)
File "/home/pjobic/Work/DNADNA/master/dnadna/training.py", line 435, in _train_outer_loop
targets)
File "/home/pjobic/Work/DNADNA/master/dnadna/training.py", line 475, in _train_inner_loop
losses, errors = self._compute_loss_metrics(outputs, targets)
File "/home/pjobic/Work/DNADNA/master/dnadna/training.py", line 584, in _compute_loss_metrics
errors[:, target_slice] = squared_err.unsqueeze(1)
IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)
I think that the problem comes from: line 570, in traning.py
:
self.learned_params.param_slices[param_name] #=slice(0, 1, None)
And doesn't work with batch_size=1
Added Code:
SPIDNA2
in nets.py
SPIDNA2Block
in nets.py
net_params.device
in training.py
net_params.num_block
in training.py