Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
s920243400
PaddleDetection
提交
fdbc289a
P
PaddleDetection
项目概览
s920243400
/
PaddleDetection
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleDetection
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
fdbc289a
编写于
2月 16, 2017
作者:
Q
qiaolongfei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add v2 activation, add comment for v2 layer
上级
e0c3a6d6
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
94 addition
and
2 deletion
+94
-2
demo/mnist/api_train.py
demo/mnist/api_train.py
+1
-1
python/paddle/v2/__init__.py
python/paddle/v2/__init__.py
+2
-1
python/paddle/v2/activation.py
python/paddle/v2/activation.py
+37
-0
python/paddle/v2/layer.py
python/paddle/v2/layer.py
+54
-0
未找到文件。
demo/mnist/api_train.py
浏览文件 @
fdbc289a
...
...
@@ -77,7 +77,7 @@ def main():
hidden2
=
paddle_v2
.
layer
.
fc
(
input
=
hidden1
,
size
=
200
)
inference
=
paddle_v2
.
layer
.
fc
(
input
=
hidden2
,
size
=
10
,
act
=
SoftmaxActivation
())
act
=
paddle_v2
.
activation
.
Softmax
())
cost
=
paddle_v2
.
layer
.
classification_cost
(
input
=
inference
,
label
=
label
)
# Create Simple Gradient Machine.
...
...
python/paddle/v2/__init__.py
浏览文件 @
fdbc289a
...
...
@@ -14,5 +14,6 @@
import
optimizer
import
layer
import
activation
__all__
=
[
'optimizer'
,
'layer'
]
__all__
=
[
'optimizer'
,
'layer'
,
'activation'
]
python/paddle/v2/activation.py
0 → 100644
浏览文件 @
fdbc289a
# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from
paddle.trainer_config_helpers.activations
import
*
__all__
=
[
"Base"
,
"Tanh"
,
"Sigmoid"
,
"Softmax"
,
"Identity"
,
"Linear"
,
'SequenceSoftmax'
,
"Exp"
,
"Relu"
,
"BRelu"
,
"SoftRelu"
,
"STanh"
,
"Abs"
,
"Square"
,
"Log"
]
Base
=
BaseActivation
Tanh
=
TanhActivation
Sigmoid
=
SigmoidActivation
Softmax
=
SoftmaxActivation
SequenceSoftmax
=
SequenceSoftmaxActivation
Identity
=
IdentityActivation
Linear
=
Identity
Relu
=
ReluActivation
BRelu
=
BReluActivation
SoftRelu
=
SoftReluActivation
STanh
=
STanhActivation
Abs
=
AbsActivation
Square
=
SquareActivation
Exp
=
ExpActivation
Log
=
LogActivation
python/paddle/v2/layer.py
浏览文件 @
fdbc289a
...
...
@@ -11,6 +11,60 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Before this new package paddle.v2.layer, users would need to use functions
in paddle.trainer_config_helpers.layers to configure networks.
The Old Way:
=========
This old way requires that the creation of a network be defined in a Python
function, say network_config, and that this Python function being passed to
paddle.trainer_config_helpers.parse_network_config for the creation of
protobuf message description of this network.
```python
def network_config():
img = paddle.trainer_config_helpers.data_layer(name="pixel", size=784)
inference = paddle.trainer_config_helpers.fc_layer(
input=img,
size=10,
act=paddle.trainer_config_helpers.SoftmaxActivation())
cost = paddle.trainer_config_helpers.classification_cost(
input=inference,
label=paddle.trainer_config_helpers.data_layer(name="label", size=10))
proto_desc = parse_network_config(network_config)
```
When parse_network_config executes network_config, those layer definition
functions like data_layer and fc_layer would change some Python global variables,
so that after the execution, parse_network_config could collect information from
these global variables and generates the protobuf message.
The New Way:
=========
In this PR, we define a function in paddle.v2.layer which creates a Python
class for each layer creation function in paddle.trainer_config_helpers.layers.
Users can use create a network as follows:
```python
img = paddle.v2.layer.data(name="pixel", size=784)
inference = paddle.v2.layer.fc(input=img, size=10, act=paddle.v2.layer.Softmax())
cost = paddle.v2.layer.classification(
input=inference,
label=paddle.v2.layer.data(name="label", size=10))
parameters = paddle.v2.parameters.create(cost)
```
This new way doesn't require those invocations to layer definition functions
to be in a Python function but could be anywhere.
Also, the creation of a protobuf message is hidden in the invocation of
paddle.v2.parameters.create, no longer exposed to users.
"""
import
paddle.trainer_config_helpers
as
conf_helps
from
paddle.trainer_config_helpers.config_parser_utils
import
\
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录