Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
6ef0b7ce
P
Paddle
项目概览
Crayon鑫
/
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看板
提交
6ef0b7ce
编写于
9月 09, 2016
作者:
Y
Yu Yang
提交者:
GitHub
9月 09, 2016
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into LazyInstallPaddleWheels
上级
ddb0f8ab
30bb3830
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
55 addition
and
41 deletion
+55
-41
demo/image_classification/prediction.py
demo/image_classification/prediction.py
+4
-5
demo/model_zoo/resnet/classify.py
demo/model_zoo/resnet/classify.py
+4
-6
demo/semantic_role_labeling/predict.py
demo/semantic_role_labeling/predict.py
+14
-8
demo/sentiment/predict.py
demo/sentiment/predict.py
+5
-5
doc_cn/ui/predict/swig_py_paddle.rst
doc_cn/ui/predict/swig_py_paddle.rst
+21
-13
paddle/.gitignore
paddle/.gitignore
+1
-0
paddle/cuda/CMakeLists.txt
paddle/cuda/CMakeLists.txt
+6
-4
未找到文件。
demo/image_classification/prediction.py
浏览文件 @
6ef0b7ce
...
...
@@ -20,9 +20,8 @@ from optparse import OptionParser
import
paddle.utils.image_util
as
image_util
from
py_paddle
import
swig_paddle
,
util
from
py_paddle
import
DataProviderWrapperConverter
from
paddle.trainer.PyDataProviderWrapper
import
DenseSlot
from
py_paddle
import
swig_paddle
,
DataProviderConverter
from
paddle.trainer.PyDataProvider2
import
dense_vector
from
paddle.trainer.config_parser
import
parse_config
logging
.
basicConfig
(
format
=
'[%(levelname)s %(asctime)s %(filename)s:%(lineno)s] %(message)s'
)
...
...
@@ -75,8 +74,8 @@ class ImageClassifier():
self
.
network
.
loadParameters
(
self
.
model_dir
)
data_size
=
3
*
self
.
crop_dims
[
0
]
*
self
.
crop_dims
[
1
]
slots
=
[
DenseSlot
(
data_size
)]
self
.
converter
=
util
.
DataProviderWrapperConverter
(
False
,
slots
)
slots
=
[
dense_vector
(
data_size
)]
self
.
converter
=
DataProviderConverter
(
slots
)
def
get_data
(
self
,
img_path
):
"""
...
...
demo/model_zoo/resnet/classify.py
浏览文件 @
6ef0b7ce
...
...
@@ -22,9 +22,8 @@ from optparse import OptionParser
import
paddle.utils.image_util
as
image_util
from
py_paddle
import
swig_paddle
,
util
from
py_paddle
import
DataProviderWrapperConverter
from
paddle.trainer.PyDataProviderWrapper
import
DenseSlot
from
py_paddle
import
swig_paddle
,
DataProviderConverter
from
paddle.trainer.PyDataProvider2
import
dense_vector
from
paddle.trainer.config_parser
import
parse_config
logging
.
basicConfig
(
format
=
'[%(levelname)s %(asctime)s %(filename)s:%(lineno)s] %(message)s'
)
...
...
@@ -85,9 +84,8 @@ class ImageClassifier():
self
.
network
.
loadParameters
(
self
.
model_dir
)
data_size
=
3
*
self
.
crop_dims
[
0
]
*
self
.
crop_dims
[
1
]
slots
=
[
DenseSlot
(
data_size
)]
is_sequence
=
False
self
.
converter
=
util
.
DataProviderWrapperConverter
(
is_sequence
,
slots
)
slots
=
[
dense_vector
(
data_size
)]
self
.
converter
=
DataProviderConverter
(
slots
)
def
get_data
(
self
,
img_path
):
"""
...
...
demo/semantic_role_labeling/predict.py
浏览文件 @
6ef0b7ce
...
...
@@ -15,8 +15,8 @@
import
os
import
numpy
as
np
from
optparse
import
OptionParser
from
py_paddle
import
swig_paddle
,
util
,
DataProviderWrapp
erConverter
from
paddle.trainer.PyDataProvider
Wrapper
import
IndexSlot
from
py_paddle
import
swig_paddle
,
DataProvid
erConverter
from
paddle.trainer.PyDataProvider
2
import
integer_value_sequence
from
paddle.trainer.config_parser
import
parse_config
"""
Usage: run following command to show help message.
...
...
@@ -50,9 +50,15 @@ class Prediction():
conf
.
model_config
)
self
.
network
.
loadParameters
(
model_dir
)
slots
=
[
IndexSlot
(
len_dict
),
IndexSlot
(
len_dict
),
IndexSlot
(
len_dict
),
IndexSlot
(
len_dict
),
IndexSlot
(
len_dict
),
IndexSlot
(
2
)]
self
.
converter
=
util
.
DataProviderWrapperConverter
(
True
,
slots
)
slots
=
[
integer_value_sequence
(
len_dict
),
integer_value_sequence
(
len_dict
),
integer_value_sequence
(
len_dict
),
integer_value_sequence
(
len_dict
),
integer_value_sequence
(
len_dict
),
integer_value_sequence
(
2
)
]
self
.
converter
=
DataProviderConverter
(
slots
)
def
load_dict_label
(
self
,
dict_file
,
label_file
):
"""
...
...
demo/sentiment/predict.py
浏览文件 @
6ef0b7ce
...
...
@@ -15,8 +15,8 @@
import
os
import
numpy
as
np
from
optparse
import
OptionParser
from
py_paddle
import
swig_paddle
,
util
,
DataProviderWrapp
erConverter
from
paddle.trainer.PyDataProvider
Wrapper
import
IndexSlot
from
py_paddle
import
swig_paddle
,
DataProvid
erConverter
from
paddle.trainer.PyDataProvider
2
import
integer_value_sequence
from
paddle.trainer.config_parser
import
parse_config
"""
...
...
@@ -46,8 +46,8 @@ class SentimentPrediction():
conf
=
parse_config
(
train_conf
,
"is_predict=1"
)
self
.
network
=
swig_paddle
.
GradientMachine
.
createFromConfigProto
(
conf
.
model_config
)
self
.
network
.
loadParameters
(
self
.
model_dir
)
slots
=
[
IndexSlot
(
self
.
dict_dim
)]
self
.
converter
=
util
.
DataProviderWrapperConverter
(
True
,
slots
)
slots
=
[
integer_value_sequence
(
self
.
dict_dim
)]
self
.
converter
=
DataProviderConverter
(
slots
)
def
load_dict
(
self
):
"""
...
...
doc_cn/ui/predict/swig_py_paddle.rst
浏览文件 @
6ef0b7ce
...
...
@@ -9,22 +9,30 @@ PaddlePaddle目前使用Swig对其常用的预测接口进行了封装,使在P
* 准备数据
* 预测
典型的预测代码如下,使用mnist手写识别作为样例。
典型的预测代码如下,使用mnist手写识别作为样例, 完整代码见
:code:`src_root/doc/ui/predict/predict_sample.py` 。
.. literalinclude:: ../../../doc/ui/predict/predict_sample.py
:language: python
:linenos:
主要的软件包为py_paddle.swig_paddle,这个软件包文档相对完善。可以使用python的 :code:`help()` 函数查询文档。主要步骤为:
* 在程序开始阶段,使用命令行参数初始化PaddlePaddle
* 在98行载入PaddlePaddle的训练文件。读取config
* 在100行创建神经网络,并在83行载入参数。
* 103行创建一个从工具类,用来转换数据。
:lines: 15-18,90-100,101-104
主要的软件包为py_paddle.swig_paddle,这个软件包文档相对完善。可以使用python的
:code:`help()` 函数查询文档。主要步骤为:
* 在程序开始阶段,使用 :code:`swig_paddle.initPaddle()` 传入命令行参数初始化
PaddlePaddle。详细的命令行参数请参考
`命令行参数 <../cmd_argument/detail_introduction.html>`_ 。
* 接下来使用 :code:`parse_config()` 解析训练时的配置文件。这里要注意预测数据通常
不包含label, 而且预测网络通常直接输出最后一层的结果而不是像训练时一样以cost
layer作为输出,所以用于预测的配置文件要做相应的修改。
* 使用 :code:`swig_paddle.GradientMachine.createFromConfigproto()` 根据上一步解
析好的配置创建神经网络。
* 创建一个 :code:`DataProviderConverter` 对象converter。
- swig_paddle接受的原始数据是C++的Matrix,也就是直接写内存的float数组。
- 这个接口并不用户友好。所以,我们提供了一个工具类DataProviderWrapperConverter.
- 这个工具类接收和PyDataProviderWrapper一样的输入数据,请参考PyDataProviderWrapper的文档。
* 在第105行执行预测。forwardTest是一个工具类,直接提取出神经网络Output层的输出结果。典型的输出结果为\:
这个接口并不用户友好。所以,我们提供了一个工具类DataProviderConverter。
这个工具类接收和PyDataProvider2一样的输入数据,详情请参考
`PyDataProvider2文档 <../../../doc/ui/data_provider/pydataprovider2.html>`_ 。
* 最后使用 :code:`forwardTest()` 直接提取出神经网络Output层的输出结果。典型的输出结果为\:
.. code-block:: text
...
...
@@ -37,4 +45,4 @@ PaddlePaddle目前使用Swig对其常用的预测接口进行了封装,使在P
2.70634608e-08, 3.48565123e-08, 5.25639710e-09,
4.48684503e-08]], dtype=float32)}]
其中,value即为softmax层的输出。由于数据是两
个,所以输出的value
。
其中,value即为softmax层的输出。由于数据是两
条,所以输出的value包含两个向量
。
paddle/.gitignore
浏览文件 @
6ef0b7ce
...
...
@@ -40,3 +40,4 @@ HPPL_ERROR_LOG
unittest.list
proto
dist
setup.py
paddle/cuda/CMakeLists.txt
浏览文件 @
6ef0b7ce
set
(
AVX_SOURCES
src/hl_math.cc
src/hl_avx_functions.cc
)
set
(
CUDA_SOURCES
src/hl_time.cc
src/hl_math.cc
src/hl_cpu_functions.cc
src/hl_avx_functions.cc
)
${
AVX_SOURCES
}
)
set
(
CUDA_CXX_WITH_GPU_SOURCES
src/hl_cuda_cublas.cc
...
...
@@ -12,7 +15,7 @@ set(CUDA_CXX_WITH_GPU_SOURCES
set_source_files_properties
(
${
CUDA_CXX_WITH_GPU_SOURCES
}
PROPERTIES COMPILE_FLAGS
"-D__NVCC__"
)
set_source_files_properties
(
${
CUDA
_SOURCES
}
set_source_files_properties
(
${
AVX
_SOURCES
}
PROPERTIES COMPILE_FLAGS
"-mavx"
)
set
(
CUDA_DSO_SOURCES
...
...
@@ -73,4 +76,3 @@ endif()
add_style_check_target
(
paddle_cuda
${
CUDA_SOURCES
}
)
add_style_check_target
(
paddle_cuda
${
CUDA_HEADERS
}
)
# add_style_check_target(hppl ${HPPL_CU_SOURCES}) # TODO(yuyang18): Format hppl style
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录