Open Victory8858 opened 2 years ago
麻烦给下具体的运行结果截图吧,我这边复现的结果是正常的
注意:以上代码在Paddle2.2下会报错,Paddle2.3下运行结果不正常,如下图:
提供一下安装的paddle2.3的具体版本吧,或者安装命令也可以,我看下是否能复现这个问题
您好,我上午在AI Studio的NoteBook中测试了(PaddlePaddle2.3.0版本),以上代码执行时间巨慢,并且print不出结果,但是刚刚又在AI Studio测试,这个问题竟然没有了,但是本地依然有问题,我不知道是否这个期间AI Studio做过更新,还是当时出了其他bug?
注:本地PaddlePaddle2.3版本利用conda安装,CUDA版本11.2,具体如下:
您好,经过测试,anaconda下新建了一个python3.8的环境,然后终端执行上述命令安装,没有额外安装任何第三方包,依然执行结果异常,我的环境是Windows,电脑显卡RTX3070
你好,按照你的方式,在windows机器上通过anaconda建立一个python3.8的环境并安装paddle2.3后,终端运行上述代码,依旧没有复现你的问题,不确定是否环境还有差异。
您好,刚刚又测试了一下,依然不行,可能与显卡型号有关 我的整体流程是: Step1:Anaconda图形界面下create一个新的环境,python版本3.8.13, 名称为pd2-3,然后终端切换到该环境
conda activate pd2-3
Step2: PaddlePaddle官网指令
conda install paddlepaddle-gpu==2.3.0 cudatoolkit=11.2 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge
Step3: Pycharm中添加该环境,运行程序,输出依然不符合预期
import paddle
# 当label,mask仅有一个元素时,Paddle2.2会报错,现在的Paddle2.3解决了这个问题,不会报错了
label = paddle.to_tensor([0])
mask = paddle.to_tensor([True], dtype='bool')
print(label[mask])
# 但是有多个元素时,Paddle2.3怎么又不支持tensor索引了?索引的结果是错的!!
label = paddle.to_tensor([0, 8, 9])
mask = paddle.to_tensor([False, True, True], dtype='bool')
print(label[mask]) # Paddle2.3运行后输出[0, 0],在Paddle2.2下运行是[8, 9]正常的
print(label[[False, True, True]]) # Paddle2.3下这样运行是正常的输出[8, 9],总之变成Tensor就不对了
输出如下:
D:\anaconda3\envs\pd2-3\python.exe C:/Users/Victory/Desktop/FarSeg-Paddle/bug.py
D:\anaconda3\envs\pd2-3\lib\site-packages\paddle\tensor\creation.py:125: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
if data.dtype == np.object:
W0530 16:37:19.604508 55576 gpu_context.cc:278] Please NOTE: device: 0, GPU Compute Capability: 8.6, Driver API Version: 11.4, Runtime API Version: 11.2
W0530 16:37:19.690508 55576 gpu_context.cc:306] device: 0, cuDNN Version: 8.2.
Tensor(shape=[1], dtype=int64, place=Place(gpu:0), stop_gradient=True,
[0])
Tensor(shape=[2], dtype=int64, place=Place(gpu:0), stop_gradient=True,
[0, 0])
Tensor(shape=[2], dtype=int64, place=Place(gpu:0), stop_gradient=True,
[8, 9])
进程已结束,退出代码 0
是否可以直接在命令行里面运行上面的代码,排除一下pycharm的问题 再就是尝试安装一下cpu版本的paddle,排除一下是否是gpu的问题
您好,在命令行运行,最后三行的结果依然结果不对,感觉是显卡型号问题(出问题版本3070 Paddle2.3.0+CUDA11.2),我尝试用其他电脑(非三系显卡)安装Paddle2.3.0+CUDA10.2版本,结果正常。
可以跟进一下本问题吗,谢谢
目前更新到最新的2.3.1版本 CUDA11.6依然结果不对,麻烦跟进一下,谢谢!
import paddle
label = paddle.to_tensor([0, 8, 9])
mask = paddle.to_tensor([False, True, True], dtype='bool')
print(label[mask]) # Paddle2.3.1运行后输出[0, 0],在Paddle2.2下运行是[8, 9]正常的
bug描述 Describe the Bug
Paddle2.3虽然解决了Tensor中只有一个元素时,利用mask索引的Bug,但在mask为多元素时索引产生了Paddle2.2中本不存在的Bug!