Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
7f1a1570
P
Paddle
项目概览
BaiXuePrincess
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
7f1a1570
编写于
2月 01, 2023
作者:
R
RedContritio
提交者:
GitHub
2月 01, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix Python IndexError of case1: paddle.linalg.lstsq (#49985)
上级
3e9d8548
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
49 addition
and
3 deletion
+49
-3
python/paddle/fluid/tests/unittests/test_linalg_lstsq_op.py
python/paddle/fluid/tests/unittests/test_linalg_lstsq_op.py
+33
-0
python/paddle/tensor/linalg.py
python/paddle/tensor/linalg.py
+16
-3
未找到文件。
python/paddle/fluid/tests/unittests/test_linalg_lstsq_op.py
浏览文件 @
7f1a1570
...
...
@@ -278,5 +278,38 @@ class LinalgLstsqTestCaseLarge2(LinalgLstsqTestCase):
self
.
_input_shape_2
=
(
50
,
300
)
class
TestLinalgLstsqAPIError
(
unittest
.
TestCase
):
def
setUp
(
self
):
pass
def
test_api_errors
(
self
):
def
test_x_bad_shape
():
x
=
paddle
.
to_tensor
(
np
.
random
.
random
(
size
=
(
5
)),
dtype
=
np
.
float32
)
y
=
paddle
.
to_tensor
(
np
.
random
.
random
(
size
=
(
5
,
15
)),
dtype
=
np
.
float32
)
out
=
paddle
.
linalg
.
lstsq
(
x
,
y
,
driver
=
'gelsy'
)
def
test_y_bad_shape
():
x
=
paddle
.
to_tensor
(
np
.
random
.
random
(
size
=
(
5
,
10
)),
dtype
=
np
.
float32
)
y
=
paddle
.
to_tensor
(
np
.
random
.
random
(
size
=
(
5
)),
dtype
=
np
.
float32
)
out
=
paddle
.
linalg
.
lstsq
(
x
,
y
,
driver
=
'gelsy'
)
def
test_shape_dismatch
():
x
=
paddle
.
to_tensor
(
np
.
random
.
random
(
size
=
(
5
,
10
)),
dtype
=
np
.
float32
)
y
=
paddle
.
to_tensor
(
np
.
random
.
random
(
size
=
(
4
,
15
)),
dtype
=
np
.
float32
)
out
=
paddle
.
linalg
.
lstsq
(
x
,
y
,
driver
=
'gelsy'
)
self
.
assertRaises
(
ValueError
,
test_x_bad_shape
)
self
.
assertRaises
(
ValueError
,
test_y_bad_shape
)
self
.
assertRaises
(
ValueError
,
test_shape_dismatch
)
if
__name__
==
'__main__'
:
unittest
.
main
()
python/paddle/tensor/linalg.py
浏览文件 @
7f1a1570
...
...
@@ -3171,13 +3171,26 @@ def lstsq(x, y, rcond=None, driver=None, name=None):
else
:
raise
RuntimeError
(
"Only support lstsq api for CPU or CUDA device."
)
if
x
.
dtype
==
y
.
dtype
and
x
.
dtype
in
(
paddle
.
float32
,
paddle
.
float64
):
pass
else
:
if
not
(
x
.
dtype
==
y
.
dtype
and
x
.
dtype
in
(
paddle
.
float32
,
paddle
.
float64
)):
raise
ValueError
(
"Only support x and y have the same dtype such as 'float32' and 'float64'."
)
if
x
.
ndim
<
2
:
raise
ValueError
(
f
"The shape of x should be (*, M, N), but received ndim is [
{
x
.
ndim
}
< 2]"
)
if
y
.
ndim
<
2
:
raise
ValueError
(
f
"The shape of y should be (*, M, K), but received ndim is [
{
y
.
ndim
}
< 2]"
)
if
x
.
shape
[
-
2
]
!=
y
.
shape
[
-
2
]:
raise
ValueError
(
f
"x with shape (*, M =
{
x
.
shape
[
-
2
]
}
, N) and y with shape (*, M =
{
y
.
shape
[
-
2
]
}
, K) should have same M."
)
if
rcond
is
None
:
if
x
.
dtype
==
paddle
.
float32
:
rcond
=
1e-7
*
max
(
x
.
shape
[
-
2
],
x
.
shape
[
-
1
])
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录