无法对没有元素的张量执行约简函数 min,因为该操作在 THCTensorMathReduce.cu:64 处没有标识

Posted

技术标签:

【中文标题】无法对没有元素的张量执行约简函数 min,因为该操作在 THCTensorMathReduce.cu:64 处没有标识【英文标题】:Cannot perform reduction function min on tensor with no elements because the operation does not have an identity at THCTensorMathReduce.cu:64 【发布时间】:2021-06-18 02:35:21 【问题描述】:

我正在配置一个 GitHub 存储库,其中作者声明您必须安装 pytorch=0.4 和 python=3.7。现在,我有 CUDA 11.0 并且 Pytorch 版本与 CUDA 冲突。安装 Pytorch 后出现以下错误。有什么提示吗?

我的康达列表

# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_pytorch_select           0.1                       cpu_0  
blas                      1.0                         mkl  
ca-certificates           2021.1.19            h06a4308_1  
certifi                   2020.12.5        py37h06a4308_0  
cffi                      1.14.0           py37h2e261b9_0  
cuda100                   1.0                           0    pytorch
cudatoolkit               9.2                           0  
freetype                  2.10.4               h5ab3b9f_0  
intel-openmp              2019.4                      243  
jpeg                      9b                   h024ee3a_2  
lcms2                     2.11                 h396b838_0  
libedit                   3.1.20210216         h27cfd23_1  
libffi                    3.2.1             hf484d3e_1007  
libgcc-ng                 9.1.0                hdf63c60_0  
libmklml                  2019.0.5                      0  
libpng                    1.6.37               hbc83047_0  
libstdcxx-ng              9.1.0                hdf63c60_0  
libtiff                   4.2.0                h3942068_0  
libwebp-base              1.2.0                h27cfd23_0  
lz4-c                     1.9.3                h2531618_0  
mkl                       2020.2                      256  
mkl-service               2.3.0            py37he8ac12f_0  
mkl_fft                   1.3.0            py37h54f3939_0  
mkl_random                1.1.1            py37h0573a6f_0  
ncurses                   6.2                  he6710b0_1  
ninja                     1.10.2           py37hff7bd54_0  
numpy                     1.20.1                   pypi_0    pypi
numpy-base                1.19.2           py37hfa32c7d_0  
olefile                   0.46                     py37_0  
openssl                   1.1.1j               h27cfd23_0  
pillow                    8.1.2            py37he98fc37_0  
pip                       21.0.1           py37h06a4308_0  
pycparser                 2.20                       py_2  
python                    3.7.1                h0371630_7  
pytorch                   1.2.0           py3.7_cuda9.2.148_cudnn7.6.2_0    pytorch
readline                  7.0                  h7b6447c_5  
scipy                     1.6.1                    pypi_0    pypi
setuptools                52.0.0           py37h06a4308_0  
six                       1.15.0           py37h06a4308_0  
sqlite                    3.33.0               h62c20be_0  
tk                        8.6.10               hbc83047_0  
torchaudio                0.8.0                    pypi_0    pypi
torchvision               0.4.0                 py37_cu92    pytorch
typing                    3.7.4.3          py37h06a4308_0  
typing-extensions         3.7.4.3              hd3eb1b0_0  
typing_extensions         3.7.4.3            pyh06a4308_0  
wheel                     0.36.2             pyhd3eb1b0_0  
xz                        5.2.5                h7b6447c_0  
zlib                      1.2.11               h7b6447c_3  
zstd                      1.4.5                h9ceee32_0  

错误

Model size: 44.17957M
==> Epoch 1/800  lr:0.0003
Traceback (most recent call last):
  File "/media/khawar/HDD_Khawar1/hypergraph_reid/main_video_person_reid_hypergraphsage_part.py", line 369, in <module>
    main()
  File "/media/khawar/HDD_Khawar1/hypergraph_reid/main_video_person_reid_hypergraphsage_part.py", line 230, in main
    train(model, criterion_xent, criterion_htri, optimizer, trainloader, use_gpu)
  File "/media/khawar/HDD_Khawar1/hypergraph_reid/main_video_person_reid_hypergraphsage_part.py", line 279, in train
    htri_loss = criterion_htri(features, pids)
  File "/home/khawar/anaconda3/envs/hypergraph_reid/lib/python3.7/site-packages/torch/nn/modules/module.py", line 547, in __call__
    result = self.forward(*input, **kwargs)
  File "/media/khawar/HDD_Khawar1/hypergraph_reid/losses.py", line 86, in forward
    dist_an.append(dist[i][mask[i] == 0].min())
RuntimeError: invalid argument 1: cannot perform reduction function min on tensor with no elements because the operation does not have an identity at /opt/conda/conda-bld/pytorch_1565287025495/work/aten/src/THC/generic/THCTensorMathReduce.cu:64

【问题讨论】:

我猜这与数据有关,与您的 pytorch 安装或 CUDA 无关。这就是我删除 CUDA 标签的原因 【参考方案1】:

如错误消息所示,min 函数的参数为​​空。torch.min([]) 的行为未定义。

在获取min 之前,检查dist[i][mask[i] == 0] 是否为空。

【讨论】:

我调试它但没有打印。有什么建议吗? 打印(dist[i][mask[i] == 0])。 2 分钟后没有打印。有什么解决办法吗? @KhawarIslam 等待错误显示,然后检查其前面的 print 打印空白。里面什么都没有。我已经检查了数据集路径和所有东西,一切都很好。

以上是关于无法对没有元素的张量执行约简函数 min,因为该操作在 THCTensorMathReduce.cu:64 处没有标识的主要内容,如果未能解决你的问题,请参考以下文章

Javascript事件奇怪的行为,removeEventListener无法正常工作

算法题23 带min函数的栈

使用 tf.while_loop 对张量进行切片

InvalidArgumentError:无法将张量添加到批次:元素数量不匹配。形状是:[张量]:[4],[批次]:[5] [Op:IteratorGetNext]

Oracle - 故障转移表或查询操作

如何在地图函数中访问张量形状