我通过 anaconda 在我的系统上安装了 cuda,该系统有 2 个 GPU,它被我的 python 识别。
import torch
torch.cuda.is_available()
true
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试通过 C API 运行模型时,出现以下错误:
~/anaconda3/lib/python3.6/site-packages/torch/utils/cpp_extension.py in _join_cuda_home(*paths)
722 '''
723 if CUDA_HOME is None:
--> 724 raise EnvironmentError('CUDA_HOME environment variable is not set. '
725 'Please set it to your CUDA install root.')
726 return os.path.join(CUDA_HOME, *paths)
OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.
Run Code Online (Sandbox Code Playgroud)
https://lfd.readthedocs.io/en/latest/install_gpu.html页面给出了如果通过他们的方法安装 cuda 则设置 CUDA_HOME 路径的说明。由于我已经通过 anaconda 安装了 cuda,所以我不知道要设置哪个路径。
我尝试了 find 方法,但它返回了太多 cuda 路径。有人可以帮我找到 CUDA …
我正在尝试用三个类来实现一个分类问题:'A'、'B' 和 'C',我想在我的模型损失函数中对不同类型的错误分类进行惩罚(有点像加权交叉熵)。类权重不适合,因为它适用于属于该类的所有数据。例如,与被错误分类为“A”相比,真实标签“B”被错误分类为“C”应该具有更高的损失。重量表如下:
A B C
A 1 1 1
B 1 1 1.2
C 1 1 1
Run Code Online (Sandbox Code Playgroud)
在当前的 categorical_crossentropy 损失中,对于真正的“B”类,如果我将预测 softmax 设为
0.5 0.4 0.1 vs 0.1 0.4 0.5
Run Code Online (Sandbox Code Playgroud)
categorical_crossentropy 将相同。'B' 是否被误分类为 A 或 C 并不重要。与第一个相比,我想增加第二个预测 softmax 的损失。
我试过https://github.com/keras-team/keras/issues/2115 但没有任何代码适用于 Keras v2。任何我可以直接将权重矩阵强制执行到 Keras 损失函数的帮助都将受到高度赞赏。