Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle
提交
e412b1ae
P
Paddle
项目概览
PaddlePaddle
/
Paddle
1 年多 前同步成功
通知
2302
Star
20931
Fork
5422
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1423
列表
看板
标记
里程碑
合并请求
543
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1,423
Issue
1,423
列表
看板
标记
里程碑
合并请求
543
合并请求
543
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e412b1ae
编写于
4月 16, 2018
作者:
J
JiayiFeng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'unify_executor_interface' into add_parallel_executor_tests
上级
fbd5cf60
22df230e
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
24 addition
and
21 deletion
+24
-21
Dockerfile
Dockerfile
+1
-1
doc/fluid/dev/index_cn.rst
doc/fluid/dev/index_cn.rst
+1
-0
doc/fluid/dev/index_en.rst
doc/fluid/dev/index_en.rst
+1
-0
paddle/fluid/framework/details/multi_devices_graph_builder.cc
...le/fluid/framework/details/multi_devices_graph_builder.cc
+7
-7
paddle/fluid/framework/details/multi_devices_graph_builder.h
paddle/fluid/framework/details/multi_devices_graph_builder.h
+2
-2
python/paddle/fluid/metrics.py
python/paddle/fluid/metrics.py
+2
-2
python/paddle/fluid/parallel_executor.py
python/paddle/fluid/parallel_executor.py
+10
-9
未找到文件。
Dockerfile
浏览文件 @
e412b1ae
...
...
@@ -57,7 +57,7 @@ RUN localedef -i en_US -f UTF-8 en_US.UTF-8
# specify sphinx version as 1.5.6 and remove -U option for [pip install -U
# sphinx-rtd-theme] since -U option will cause sphinx being updated to newest
# version(1.7.1 for now), which causes building documentation failed.
RUN
pip
install
--upgrade
pip
&&
\
RUN
pip
install
--upgrade
pip
==
9.0.3
&&
\
pip
install
-U
wheel
&&
\
pip
install
-U
docopt PyYAML
sphinx
==
1.5.6
&&
\
pip
install
sphinx-rtd-theme
==
0.1.9 recommonmark
...
...
doc/fluid/dev/index_cn.rst
浏览文件 @
e412b1ae
...
...
@@ -4,6 +4,7 @@
.. toctree::
:maxdepth: 1
api_doc_std_cn.md
new_op_cn.md
new_op_kernel.md
use_eigen_cn.md
...
...
doc/fluid/dev/index_en.rst
浏览文件 @
e412b1ae
...
...
@@ -4,6 +4,7 @@ Development
.. toctree::
:maxdepth: 1
api_doc_std_en.md
new_op_en.md
new_op_kernel.md
use_eigen_en.md
...
...
paddle/fluid/framework/details/multi_devices_graph_builder.cc
浏览文件 @
e412b1ae
...
...
@@ -55,21 +55,21 @@ MultiDevSSAGraphBuilder::MultiDevSSAGraphBuilder(
}
}
void
MultiDevSSAGraphBuilder
::
CreateOpHandleIOs
(
SSAGraph
*
result
,
OpDesc
*
op
,
void
MultiDevSSAGraphBuilder
::
CreateOpHandleIOs
(
SSAGraph
*
result
,
const
OpDesc
&
op
,
const
platform
::
Place
&
p
,
const
size_t
&
i
)
const
{
auto
*
op_handle
=
result
->
ops_
.
back
().
get
();
op_handle
->
dev_ctxes_
[
p
]
=
const_cast
<
platform
::
DeviceContext
*>
(
platform
::
DeviceContextPool
::
Instance
().
Get
(
p
));
op_handle
->
dev_ctxes_
[
p
]
=
platform
::
DeviceContextPool
::
Instance
().
Get
(
p
);
auto
var_names
=
op
->
InputArgumentNames
();
auto
var_names
=
op
.
InputArgumentNames
();
for
(
auto
&
each_var_name
:
var_names
)
{
VarHandle
*
var
=
CreateOrGetLatestVarHandle
(
result
,
each_var_name
,
p
,
i
);
op_handle
->
AddInput
(
var
);
}
var_names
=
op
->
OutputArgumentNames
();
var_names
=
op
.
OutputArgumentNames
();
for
(
auto
&
each_var_name
:
var_names
)
{
CreateOpOutput
(
result
,
op_handle
,
each_var_name
,
p
,
i
);
...
...
@@ -107,7 +107,7 @@ std::unique_ptr<SSAGraph> MultiDevSSAGraphBuilder::Build(
result
.
ops_
.
emplace_back
(
new
SendOpHandle
(
*
op
,
s
,
p
));
// Create inputs for output on original place and no ssa output
// is created for send op.
CreateOpHandleIOs
(
&
result
,
op
,
p
,
0
);
CreateOpHandleIOs
(
&
result
,
*
op
,
p
,
0
);
continue
;
}
...
...
@@ -117,7 +117,7 @@ std::unique_ptr<SSAGraph> MultiDevSSAGraphBuilder::Build(
result
.
ops_
.
emplace_back
(
new
ComputationOpHandle
(
*
op
,
s
,
p
));
auto
*
op_handle
=
result
.
ops_
.
back
().
get
();
CreateOpHandleIOs
(
&
result
,
op
,
p
,
i
);
CreateOpHandleIOs
(
&
result
,
*
op
,
p
,
i
);
auto
var_names
=
op
->
OutputArgumentNames
();
...
...
paddle/fluid/framework/details/multi_devices_graph_builder.h
浏览文件 @
e412b1ae
...
...
@@ -45,8 +45,8 @@ class MultiDevSSAGraphBuilder : public SSAGraphBuilder {
std
::
unique_ptr
<
SSAGraph
>
Build
(
const
ProgramDesc
&
program
)
const
override
;
private:
void
CreateOpHandleIOs
(
SSAGraph
*
result
,
OpDesc
*
op
,
const
platform
::
Place
&
p
,
const
size_t
&
i
)
const
;
void
CreateOpHandleIOs
(
SSAGraph
*
result
,
const
OpDesc
&
o
p
,
const
platform
::
Place
&
p
,
const
size_t
&
i
)
const
;
private:
std
::
string
loss_var_name_
;
...
...
python/paddle/fluid/metrics.py
浏览文件 @
e412b1ae
...
...
@@ -169,7 +169,7 @@ class Accuracy(MetricBase):
return
self
.
value
/
self
.
weight
class
ChunkEvalutor
(
MetricBase
):
class
ChunkEvalu
a
tor
(
MetricBase
):
"""
Accumulate counter numbers output by chunk_eval from mini-batches and
compute the precision recall and F1-score using the accumulated counter
...
...
@@ -177,7 +177,7 @@ class ChunkEvalutor(MetricBase):
"""
def
__init__
(
self
,
name
=
None
):
super
(
ChunkEvalutor
,
self
).
__init__
(
name
)
super
(
ChunkEvalu
a
tor
,
self
).
__init__
(
name
)
self
.
num_infer_chunks
=
0
self
.
num_label_chunks
=
0
self
.
num_correct_chunks
=
0
...
...
python/paddle/fluid/parallel_executor.py
浏览文件 @
e412b1ae
...
...
@@ -61,8 +61,8 @@ class ParallelExecutor(object):
main_program=test_program,
share_vars_from=train_exe)
train_loss, = train_exe.run([loss.name], feed
_dict
=feed_dict)
test_loss, = test_exe.run([loss.name], feed
_dict
=feed_dict)
train_loss, = train_exe.run([loss.name], feed=feed_dict)
test_loss, = test_exe.run([loss.name], feed=feed_dict)
"""
self
.
_places
=
[]
...
...
@@ -123,22 +123,23 @@ class ParallelExecutor(object):
allow_op_delay
)
self
.
scope
=
scope
def
run
(
self
,
fetch_list
,
feed_dict
=
{}):
def
run
(
self
,
fetch_list
,
feed
=
{},
feed
_dict
=
{}):
"""
:param fetch_list: A list of variable names that will be fetched.
:param feed
_dict
: A dict mapping for feed variable name to LoDTensor
:param feed: A dict mapping for feed variable name to LoDTensor
or numpy array.
:return: fetched value list.
"""
if
not
isinstance
(
feed_dict
,
dict
):
raise
TypeError
(
"feed_dict should be a dict"
)
feed
=
feed_dict
if
not
isinstance
(
feed
,
dict
):
raise
TypeError
(
"feed should be a dict"
)
feed_tensor_dict
=
{}
for
i
,
feed_name
in
enumerate
(
feed
_dict
):
feed_tensor
=
feed
_dict
[
feed_name
]
for
i
,
feed_name
in
enumerate
(
feed
):
feed_tensor
=
feed
[
feed_name
]
if
not
isinstance
(
feed_tensor
,
core
.
LoDTensor
):
feed_tensor
=
core
.
LoDTensor
()
feed_tensor
.
set
(
feed
_dict
[
feed_name
],
self
.
_act_places
[
0
])
feed_tensor
.
set
(
feed
[
feed_name
],
self
.
_act_places
[
0
])
feed_tensor_dict
[
feed_name
]
=
feed_tensor
fetch_var_name
=
'@FETCHED_VAR_NAME@'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录