python 中的 cupy 库中的 amax 和 max 函数在使用只有一列或只有一行的矩阵时是否会出错?
我尝试使用 cupy 进行 gpu 加速来实现用于机器学习和图像分类的 softmax 激活函数。我观察到,对于形状为 nx1 或 1xn 的数组,cupys max 函数会输出错误。然而,对于 nxa 的所有其他情况(其中 n 和 a 都是 1 以外的整数),它工作得很好。
我的代码:
def softmax_(z): max_z = cp.max(z, axis=0, keepdims=true) # problematic max function exp_z = cp.exp(z - max_z) # subtracting the maximum value for numerical stability sum_exp_z = cp.sum(exp_z, axis=0, keepdims=true) # summing up the values return exp_z / sum_exp_z # dividing them to get the softmax array1 = cp.random.randn(3, 4) # 3x4 array2 = cp.random.randn(5, 1) # 5x1 print(softmax_(array1)) # no error print(softmax_(array2)) # produces an error
我的操作系统错误,我对此缺乏经验:
oserror: [winerror 123] the filename, directory name, or volume label syntax is incorrect: 'c:\\users\\confidential\\.cupy\\jitify_cache\\tmp1pxgjv_g' -> 'c:\\users\\confidential/.cupy/jitify_cache/jitify_<unknown>_200200_12030_2_b3452ffa79e273adadd0403b6b0c05b78158b1e0.json'
数组 1 的输出
output: [[0.17813469 0.20912114 0.19734889 0.30515635] [0.42569072 0.47354802 0.4463671 0.20997539] [0.39617459 0.31733085 0.356284 0.48486825]]
数组2的错误:
../../util_ptx.cuh(38): warning: util_type.cuh: [jitify] File not found ../../util_ptx.cuh(41): warning: util_debug.cuh: [jitify] File not found ../../thread/thread_load.cuh(40): warning: ../util_ptx.cuh: [jitify] File not found Traceback (most recent call last): File "c:\Users\confidential\Desktop\Projekte\Neural_network2\test.py", line 14, in <module> print(softmax_(array2)) ^^^^^^^^^^^^^^^^ File "c:\Users\confidential\Desktop\Projekte\Neural_network2\test.py", line 4, in softmax_ `max_Z = cp.max(Z, axis=0, keepdims=True)` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\confidential\PycharmProjects\nunpy\venv\Lib\site-packages\cupy\_statistics\order.py", line 81, in amax return a.max(axis=axis, out=out, keepdims=keepdims) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "cupy\_core\core.pyx", line 990, in cupy._core.core._ndarray_base.max File "cupy\_core\core.pyx", line 998, in cupy._core.core._ndarray_base.max File "cupy\_core\_routines_statistics.pyx", line 43, in cupy._core._routines_statistics._ndarray_max File "cupy\_core\_reduction.pyx", line 618, in cupy._core._reduction._SimpleReductionKernel.__call__ File "cupy\_core\_reduction.pyx", line 370, in cupy._core._reduction._AbstractReductionKernel._call File "cupy\_core\_cub_reduction.pyx", line 689, in cupy._core._cub_reduction._try_to_call_cub_reduction File "cupy\_core\_cub_reduction.pyx", line 540, in cupy._core._cub_reduction._launch_cub File "cupy\_util.pyx", line 64, in cupy._util.memoize.decorator.ret File "cupy\_core\_cub_reduction.pyx", line 240, in cupy._core._cub_reduction._SimpleCubReductionKernel_get_cached_function File "cupy\_core\_cub_reduction.pyx", line 223, in cupy._core._cub_reduction._create_cub_reduction_function File "cupy\_core\core.pyx", line 2254, in cupy._core.core.compile_with_cache File "C:\Users\confidential\PycharmProjects\nunpy\venv\Lib\site-packages\cupy\cuda\compiler.py", line 484, in _compile_module_with_cache return _compile_with_cache_cuda( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\confidential\PycharmProjects\nunpy\venv\Lib\site-packages\cupy\cuda\compiler.py", line 562, in _compile_with_cache_cuda ptx, mapping = compile_using_nvrtc( ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\confidential\PycharmProjects\nunpy\venv\Lib\site-packages\cupy\cuda\compiler.py", line 319, in compile_using_nvrtc return _compile(source, options, cu_path, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\confidential\PycharmProjects\nunpy\venv\Lib\site-packages\cupy\cuda\compiler.py", line 284, in _compile options, headers, include_names = _jitify_prep( ^^^^^^^^^^^^^ File "C:\Users\confidential\PycharmProjects\nunpy\venv\Lib\site-packages\cupy\cuda\compiler.py", line 233, in _jitify_prep jitify._init_module() File "cupy\cuda\jitify.pyx", line 212, in cupy.cuda.jitify._init_module File "cupy\cuda\jitify.pyx", line 233, in cupy.cuda.jitify._init_module File "cupy\cuda\jitify.pyx", line 209, in cupy.cuda.jitify._init_cupy_headers File "cupy\cuda\jitify.pyx", line 198, in cupy.cuda.jitify._init_cupy_headers_from_scratch File "cupy\cuda\jitify.pyx", line 128, in cupy.cuda.jitify.dump_cache OSError: [WinError 123] The syntax for the file name, directory name, or volume label is incorrect: 'C:\\Users\\confidential\\.cupy\\jitify_cache\\tmps16uxq46' -> 'C:\\Users\\confidential/.cupy/jitify_cache/jitify_<unknown>_200200_12030_2_b3452ffa79e273adadd0403b6b0c05b78158b1e0.json'
正确答案
您需要遵循的一些调试步骤。
1)更新cupy
pip install cupy --upgrade
2) 检查权限。
确保运行脚本的用户具有读取和写入 cupy_cache_dir
环境变量中指定的缓存目录的必要权限。
- 重塑输入数组
如果问题仍然存在,您可以尝试将输入数组重塑为
'(n,)'
的形状,而不是'(n, 1)'
或'(1, n)'
。
4)禁用jit编译
您可以尝试通过将 cupy_cache_dir
环境变量设置为有效目录来禁用 jit 编译。
import cupy as cp import os os.environ['CUPY_CACHE_DIR'] = '/path/to/valid/directory'
将“/path/to/valid/directory”替换为 cupy 可以成功缓存已编译内核的目录。这可能会帮助您避免 oserror。
以上是python 中的 cupy 库中的 amax 和 max 函数在使用只有一列或只有一行的矩阵时是否会出错?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...

Uvicorn是如何持续监听HTTP请求的?Uvicorn是一个基于ASGI的轻量级Web服务器,其核心功能之一便是监听HTTP请求并进�...

在Python中,如何通过字符串动态创建对象并调用其方法?这是一个常见的编程需求,尤其在需要根据配置或运行...

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...
