Я тренирую модель глубокого обучения (3DCNN) в PyTorch. Кажется, что это хорошо работает, кроме некоторых проблем, которые у меня возникают с размером партии.
При размере партии 128, тренировка проходит нормально (10 эпох).
Однако, если я уменьшу размер пакета до 64 или ниже, он заканчивается через 5 эпох со следующей трассировкой. Я не понимаю, поскольку процедура для каждой эпохи в значительной степени одинакова, поэтому не следует вести себя по-разному в каждой эпохе.
Есть идеи относительно того, что может вызвать это?
Я работает на 4 графических процессорах в кластере HP C. Извините, я не могу поделиться кодом.
Traceback (most recent call last):
File "junin-3DCNN.mem.parallel.py", line 245, in <module>
path = modelpath)
File "/project/junin/deforestation_forecasting/python_code/Training.py", line 118, in train_model
output = model.forward(data, sigmoid = not require_sigmoid)
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 152, in forward
outputs = self.parallel_apply(replicas, inputs, kwargs)
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 162, in parallel_apply
return parallel_apply(replicas, inputs, kwargs, self.device_ids[:len(replicas)])
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/parallel/parallel_apply.py", line 85, in parallel_apply
output.reraise()
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/_utils.py", line 369, in reraise
raise self.exc_type(msg)
ValueError: Caught ValueError in replica 0 on device 0.
Original Traceback (most recent call last):
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/parallel/parallel_apply.py", line 60, in _worker
output = module(*input, **kwargs)
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/modules/module.py", line 547, in __call__
result = self.forward(*input, **kwargs)
File "/project/junin/deforestation_forecasting/python_code/ConvRNN.py", line 522, in forward
x= self.ln(x)
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/modules/module.py", line 547, in __call__
result = self.forward(*input, **kwargs)
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/modules/container.py", line 92, in forward
input = module(input)
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/modules/module.py", line 547, in __call__
result = self.forward(*input, **kwargs)
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/modules/batchnorm.py", line 81, in forward
exponential_average_factor, self.eps)
File "/home/anaconda3/envs/py37-2/lib/python3.7/site-packages/torch/nn/functional.py", line 1652, in batch_norm
raise ValueError('Expected more than 1 value per channel when training, got input size {}'.format(size))
ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 100])