Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_38905368
tensorflow
提交
d82cc200
T
tensorflow
项目概览
qq_38905368
/
tensorflow
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tensorflow
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d82cc200
编写于
3月 07, 2016
作者:
V
Vijay Vasudevan
提交者:
TensorFlower Gardener
3月 07, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TensorFlow: select op: add support for empty tensors: select
can propagate empty tensors. Change: 116588842
上级
cc62d992
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
8 deletion
+22
-8
tensorflow/core/kernels/cwise_op_select.cc
tensorflow/core/kernels/cwise_op_select.cc
+11
-8
tensorflow/python/kernel_tests/cwise_ops_test.py
tensorflow/python/kernel_tests/cwise_ops_test.py
+11
-0
未找到文件。
tensorflow/core/kernels/cwise_op_select.cc
浏览文件 @
d82cc200
...
...
@@ -77,11 +77,12 @@ class SelectOp : public OpKernel {
Tensor
*
output
=
nullptr
;
OP_REQUIRES_OK
(
ctx
,
ctx
->
allocate_output
(
0
,
then
->
shape
(),
&
output
));
functor
::
BatchSelectFunctor
<
Device
,
T
>
func
;
func
(
ctx
->
eigen_device
<
Device
>
(),
output
->
flat_outer_dims
<
T
>
(),
cond
->
vec
<
bool
>
(),
then
->
flat_outer_dims
<
T
>
(),
else_
->
flat_outer_dims
<
T
>
());
if
(
output
->
NumElements
()
>
0
)
{
functor
::
BatchSelectFunctor
<
Device
,
T
>
func
;
func
(
ctx
->
eigen_device
<
Device
>
(),
output
->
flat_outer_dims
<
T
>
(),
cond
->
vec
<
bool
>
(),
then
->
flat_outer_dims
<
T
>
(),
else_
->
flat_outer_dims
<
T
>
());
}
}
void
ComputeElementwise
(
OpKernelContext
*
ctx
,
const
Tensor
*
cond
,
...
...
@@ -89,9 +90,11 @@ class SelectOp : public OpKernel {
if
(
!
ctx
->
ValidateInputsAreSameShape
(
this
))
return
;
Tensor
*
output
=
nullptr
;
OP_REQUIRES_OK
(
ctx
,
ctx
->
allocate_output
(
0
,
then
->
shape
(),
&
output
));
functor
::
SelectFunctor
<
Device
,
T
>
func
;
func
(
ctx
->
eigen_device
<
Device
>
(),
output
->
flat
<
T
>
(),
cond
->
flat
<
bool
>
(),
then
->
flat
<
T
>
(),
else_
->
flat
<
T
>
());
if
(
output
->
NumElements
()
>
0
)
{
functor
::
SelectFunctor
<
Device
,
T
>
func
;
func
(
ctx
->
eigen_device
<
Device
>
(),
output
->
flat
<
T
>
(),
cond
->
flat
<
bool
>
(),
then
->
flat
<
T
>
(),
else_
->
flat
<
T
>
());
}
}
private:
...
...
tensorflow/python/kernel_tests/cwise_ops_test.py
浏览文件 @
d82cc200
...
...
@@ -967,6 +967,17 @@ class SelectOpTest(tf.test.TestCase):
with
self
.
assertRaises
(
ValueError
):
tf
.
select
(
c
,
xt
,
yt
)
def
testEmptyTensor
(
self
):
c
=
np
.
random
.
randint
(
0
,
3
,
0
).
astype
(
np
.
bool
).
reshape
(
1
,
3
,
0
)
x
=
np
.
random
.
rand
(
1
,
3
,
0
)
*
100
y
=
np
.
random
.
rand
(
1
,
3
,
0
)
*
100
z_expected
=
np
.
zeros
((
1
,
3
,
0
),
dtype
=
np
.
float32
)
with
self
.
test_session
():
xt
=
x
.
astype
(
np
.
float32
)
yt
=
y
.
astype
(
np
.
float32
)
z
=
tf
.
select
(
c
,
xt
,
yt
).
eval
()
self
.
assertAllEqual
(
z_expected
,
z
)
class
BatchSelectOpTest
(
tf
.
test
.
TestCase
):
"""Test broadcasting of Select when 'c' is a vec and 't' &'e' are rank2+."""
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录