无法对没有元素的张量执行约简函数 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无法正常工作
InvalidArgumentError:无法将张量添加到批次:元素数量不匹配。形状是:[张量]:[4],[批次]:[5] [Op:IteratorGetNext]