Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pytork量化运行时错误:尝试创建负维张量_Python_Pytorch - Fatal编程技术网

Python Pytork量化运行时错误:尝试创建负维张量

Python Pytork量化运行时错误:尝试创建负维张量,python,pytorch,Python,Pytorch,我正在试用pytorch量化模块。在进行静态训练后量化时,我遵循 文件中详细说明的下一步骤: 添加QuantStub和DeQuantStub模块 引信操作 指定量化配置 torch.quantization.prepare() 通过对校准数据集运行推断来校准模型 torch.quantization.convert() 但是,在准备模型后校准模型时,程序会中断 错误出现在最后一个完全连接的层上。图中引入的观察者似乎试图创建负维直方图 以下是错误: x = self.fc(x) Fil

我正在试用pytorch量化模块。在进行静态训练后量化时,我遵循 文件中详细说明的下一步骤:

  • 添加QuantStub和DeQuantStub模块
  • 引信操作
  • 指定量化配置
  • torch.quantization.prepare()
  • 通过对校准数据集运行推断来校准模型
  • torch.quantization.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]
    
    完全连接的组件按以下方式构建:

    class LinearReLU(nn.Sequential):
        def __init__(self, in_neurons, out_neurons):
            super(LinearReLU, self).__init__(
                nn.Linear(in_neurons, out_neurons),
                nn.ReLU(inplace=False)
            )
    
    它们以
    fc=nn.Sequential(*[linearerlu,linearerlu,…])
    的形式附加在
    fc(x)

    然而,我怀疑这与卷积和完全连接层之间的重塑有关

    x=x.重塑(-1,大小)

    直到现在我还不能解决这个错误


    提前感谢所有有同样问题的人

    Pyrotch量化文档中的解决方案如下:

    基于视图的操作,如View()、as_stried()、expand()、flatte()、select()、python风格的索引等,与常规张量一样工作(如果量化不是每个通道)

    问题是使用
    重塑
    并进行每通道量化。如果我对最后两个通道进行
    平均
    ,则没有问题