Я пробую модуль квантования pytorch. При выполнении stati c после обучающего квантования я следую следующей процедуре, подробно изложенной в документации:
- добавление модулей QuantStub и DeQuantStub
- Операции с плавкими предохранителями
- Укажите конфигурацию qauntification
- torch.quanization.prepare ()
- Откалибруйте модель, выполнив вывод для набора калибровочных данных
- torch.quanization.convert ()
Однако при калибровке модели после ее подготовки программа обрывается.
Ошибка появляется на последних полностью подключенных слоях. Кажется, что наблюдатели, представленные на графике, пытаются создать гистограмму отрицательного измерения.
Вот ошибка:
x = self.fc(x)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/nn/modules/module.py", line 550, in __call__
result = self.forward(*input, **kwargs)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/nn/modules/container.py", line 100, in forward
input = module(input)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/nn/modules/module.py", line 550, in __call__
result = self.forward(*input, **kwargs)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/nn/modules/container.py", line 100, in forward
input = module(input)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/nn/modules/module.py", line 550, in __call__
result = self.forward(*input, **kwargs)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/nn/modules/container.py", line 100, in forward
input = module(input)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/nn/modules/module.py", line 552, in __call__
hook_result = hook(self, input, result)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/quantization/quantize.py", line 74, in _observer_forward_hook
return self.activation_post_process(output)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/nn/modules/module.py", line 550, in __call__
result = self.forward(*input, **kwargs)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/quantization/observer.py", line 805, in forward
self.bins)
File "/home/juan/miniconda3/envs/sparse/lib/python3.6/site-packages/torch/quantization/observer.py", line 761, in _combine_histograms
histogram_with_output_range = torch.zeros((Nbins * downsample_rate))
RuntimeError: Trying to create tensor with negative dimension -4398046511104: [-4398046511104]
Полностью подключенные построены как
* 1025. *
Они добавляются в fc(x)
как fc = nn.Sequential(*([LinearReLU, LinearReLU, ...])
.
Однако я подозреваю, что это как-то связано с изменением формы между извилинами и полностью связанными слоями.
x = x.reshape(-1, size)
До сих пор я не смог решить эту ошибку.
Заранее спасибо