Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
f185af8d
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f185af8d
编写于
10月 10, 2017
作者:
Y
Yu Yang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Complete parameter
上级
0c37a061
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
75 addition
and
2 deletion
+75
-2
python/paddle/v2/framework/graph.py
python/paddle/v2/framework/graph.py
+48
-2
python/paddle/v2/framework/tests/test_parameter.py
python/paddle/v2/framework/tests/test_parameter.py
+27
-0
未找到文件。
python/paddle/v2/framework/graph.py
浏览文件 @
f185af8d
import
paddle.v2.framework.core
as
core
import
collections
import
numpy
as
np
import
copy
__all__
=
[
'Block'
,
'Variable'
,
'Program'
,
'Operator'
]
class
Variable
(
object
):
def
__init__
(
self
,
block
,
name
=
None
,
shape
=
None
,
dtype
=
None
,
lod_level
=
None
):
def
__init__
(
self
,
block
,
name
=
None
,
shape
=
None
,
dtype
=
None
,
lod_level
=
None
,
**
kwargs
):
self
.
block
=
block
if
name
is
None
:
...
...
@@ -144,6 +150,10 @@ class Block(object):
def
create_var
(
self
,
*
args
,
**
kwargs
):
return
Variable
(
self
,
*
args
,
**
kwargs
)
def
create_parameter
(
self
,
*
args
,
**
kwargs
):
global_block
=
self
.
program
.
global_block
()
return
Parameter
(
global_block
,
*
args
,
**
kwargs
)
def
append_op
(
self
,
*
args
,
**
kwargs
):
op_desc
=
self
.
desc
.
append_op
()
op
=
Operator
(
self
,
op_desc
,
*
args
,
**
kwargs
)
...
...
@@ -190,5 +200,41 @@ class Program(object):
self
.
current_block_idx
=
self
.
current_block
().
parent_idx
class
Parameter
(
Variable
):
def
__init__
(
self
,
block
,
shape
,
dtype
,
**
kwargs
):
if
shape
is
None
or
dtype
is
None
:
raise
ValueError
(
"Parameter must set shape and dtype"
)
if
len
(
shape
)
==
0
:
raise
ValueError
(
"Parameter shape cannot be empty"
)
for
each
in
shape
:
if
each
<
0
:
raise
ValueError
(
"Parameter shape should not be related with "
"batch-size"
)
Variable
.
__init__
(
self
,
block
,
shape
=
shape
,
dtype
=
dtype
,
**
kwargs
)
self
.
trainable
=
kwargs
.
get
(
'trainable'
,
True
)
self
.
init_attr
=
kwargs
.
get
(
'initialize_attr'
,
{
'type'
:
'uniform_random'
,
'min'
:
-
1.0
,
'max'
:
1.0
})
self
.
optimize_attr
=
kwargs
.
get
(
'optimize_attr'
,
{
'learning_rate'
:
1.0
})
self
.
_append_initialize_ops_
()
def
_append_initialize_ops_
(
self
):
attr
=
copy
.
deepcopy
(
self
.
init_attr
)
op_type
=
attr
.
pop
(
'type'
,
None
)
block
=
self
.
block
assert
isinstance
(
block
,
Block
)
shape
=
self
.
shape
attr
[
'dims'
]
=
shape
attr
[
'data_type'
]
=
int
(
self
.
data_type
)
op
=
block
.
prepend_op
(
type
=
op_type
,
inputs
=
None
,
outputs
=
{
'Out'
:
[
self
]},
attrs
=
attr
)
self
.
op
=
op
# program is a global instance.
g_program
=
Program
.
instance
()
python/paddle/v2/framework/tests/test_parameter.py
0 → 100644
浏览文件 @
f185af8d
import
unittest
from
paddle.v2.framework.graph
import
g_program
import
paddle.v2.framework.core
as
core
class
TestParameter
(
unittest
.
TestCase
):
def
test_param
(
self
):
b
=
g_program
.
create_block
()
param
=
b
.
create_parameter
(
name
=
'fc.w'
,
shape
=
[
784
,
100
],
dtype
=
'float32'
,
initialize_attr
=
{
'type'
:
'uniform_random'
,
'seed'
:
13
,
'min'
:
-
5.0
,
'max'
:
5.0
})
self
.
assertIsNotNone
(
param
)
self
.
assertEqual
(
'fc.w'
,
param
.
name
)
self
.
assertEqual
((
784
,
100
),
param
.
shape
)
self
.
assertEqual
(
core
.
DataType
.
FP32
,
param
.
data_type
)
self
.
assertEqual
(
0
,
param
.
block
.
idx
)
if
__name__
==
'__main__'
:
unittest
.
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录