Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle
提交
554cea68
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看板
提交
554cea68
编写于
4月 11, 2018
作者:
T
tangwei12
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
move most codes to uci_housing
#9660
上级
3a3ff62e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
80 addition
and
171 deletion
+80
-171
doc/fluid/getstarted/quickstart_cn.rst
doc/fluid/getstarted/quickstart_cn.rst
+18
-81
doc/fluid/getstarted/quickstart_en.rst
doc/fluid/getstarted/quickstart_en.rst
+28
-88
python/paddle/dataset/uci_housing.py
python/paddle/dataset/uci_housing.py
+34
-2
未找到文件。
doc/fluid/getstarted/quickstart_cn.rst
浏览文件 @
554cea68
...
...
@@ -25,94 +25,31 @@ PaddlePaddle支持使用pip快速安装,目前支持CentOS 6以上, Ubuntu 14.
创建一个 housing.py 并粘贴此Python代码:
.. code-block:: python
import sys
import math
import numpy
import paddle.fluid as fluid
import paddle.fluid.core as core
import paddle
import paddle.fluid as fluid
def train(save_dirname):
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
y_predict = fluid.layers.fc(input=x, size=1, act=None)
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_cost = fluid.layers.mean(cost)
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
optimize_ops, params_grads = sgd_optimizer.minimize(avg_cost)
BATCH_SIZE = 20
train_reader = paddle.batch(
paddle.reader.shuffle(paddle.dataset.uci_housing.train(), buf_size=500), batch_size=BATCH_SIZE)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
feeder = fluid.DataFeeder(place=place, feed_list=[x, y])
exe.run(fluid.default_startup_program())
main_program = fluid.default_main_program()
PASS_NUM = 100
for pass_id in range(PASS_NUM):
for data in train_reader():
avg_loss_value, = exe.run(main_program,
feed=feeder.feed(data),
fetch_list=[avg_cost])
if avg_loss_value[0] < 10.0:
if save_dirname is not None:
fluid.io.save_inference_model(save_dirname, ['x'],
[y_predict], exe)
return
if math.isnan(float(avg_loss_value)):
sys.exit("got NaN loss, training failed.")
raise AssertionError("Fit a line cost is too large, {0:2.2}".format(
avg_loss_value[0]))
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
place = fluid.CPUPlace()
exe = fluid.Executor(place=place)
feeder = fluid.DataFeeder(place=place, feed_list=[x])
def infer(save_dirname):
place = fluid.CPUPlace()
exe = fluid.Executor(place)
with fluid.scope_guard(fluid.core.Scope()):
parameter_model = paddle.dataset.uci_housing.fluid_model()
probs = []
[inference_program, feed_target_names,fetch_targets] = \
fluid.io.load_inference_model(parameter_model, exe)
inference_scope = fluid.core.Scope()
with fluid.scope_guard(inference_scope):
# Use fluid.io.load_inference_model to obtain the inference program desc,
# the feed_target_names (the names of variables that will be feeded
# data using feed operators), and the fetch_targets (variables that
# we want to obtain data from using fetch operators).
[inference_program, feed_target_names,
fetch_targets] = fluid.io.load_inference_model(save_dirname, exe)
predict_reader = paddle.batch(paddle.dataset.uci_housing.predict_reader(), batch_size=20)
# The input's dimension should be 2-D and the second dim is 13
# The input data should be >= 0
batch_size = 10
tensor_x = numpy.random.uniform(0, 10,
[batch_size, 13]).astype("float32")
assert feed_target_names[0] == 'x'
results = exe.run(inference_program,
feed={feed_target_names[0]: tensor_x},
results = []
for data in predict_reader():
result = exe.run(inference_program,
feed=feeder.feed(data),
fetch_list=fetch_targets)
probs.append(results
)
results.append(result
)
for i in xrange(len(probs)):
print(probs[i][0] * 1000)
print('Predicted price: ${0}'.format(probs[i][0] * 1000))
def main():
# Directory for saving the trained model
save_dirname = "fit_a_line.inference.model"
train(save_dirname)
infer(save_dirname)
if __name__=="__main__":
main()
for res in results:
for i in xrange(len(res[0])):
print 'Predicted price: ${:,.2f}'.format(res[0][i][0] * 1000)
执行 :code:`python housing.py` 瞧! 它应该打印出预测住房数据的清单。
doc/fluid/getstarted/quickstart_en.rst
浏览文件 @
554cea68
...
...
@@ -28,93 +28,33 @@ code:
.. code-block:: python
import sys
import math
import numpy
import paddle.fluid as fluid
import paddle.fluid.core as core
import paddle
def train(save_dirname):
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
y_predict = fluid.layers.fc(input=x, size=1, act=None)
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_cost = fluid.layers.mean(cost)
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
optimize_ops, params_grads = sgd_optimizer.minimize(avg_cost)
BATCH_SIZE = 20
train_reader = paddle.batch(
paddle.reader.shuffle(paddle.dataset.uci_housing.train(), buf_size=500), batch_size=BATCH_SIZE)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
feeder = fluid.DataFeeder(place=place, feed_list=[x, y])
exe.run(fluid.default_startup_program())
main_program = fluid.default_main_program()
PASS_NUM = 100
for pass_id in range(PASS_NUM):
for data in train_reader():
avg_loss_value, = exe.run(main_program,
feed=feeder.feed(data),
fetch_list=[avg_cost])
if avg_loss_value[0] < 10.0:
if save_dirname is not None:
fluid.io.save_inference_model(save_dirname, ['x'],
[y_predict], exe)
return
if math.isnan(float(avg_loss_value)):
sys.exit("got NaN loss, training failed.")
raise AssertionError("Fit a line cost is too large, {0:2.2}".format(
avg_loss_value[0]))
def infer(save_dirname):
place = fluid.CPUPlace()
exe = fluid.Executor(place)
probs = []
inference_scope = fluid.core.Scope()
with fluid.scope_guard(inference_scope):
# Use fluid.io.load_inference_model to obtain the inference program desc,
# the feed_target_names (the names of variables that will be feeded
# data using feed operators), and the fetch_targets (variables that
# we want to obtain data from using fetch operators).
[inference_program, feed_target_names,
fetch_targets] = fluid.io.load_inference_model(save_dirname, exe)
# The input's dimension should be 2-D and the second dim is 13
# The input data should be >= 0
batch_size = 10
tensor_x = numpy.random.uniform(0, 10,
[batch_size, 13]).astype("float32")
assert feed_target_names[0] == 'x'
results = exe.run(inference_program,
feed={feed_target_names[0]: tensor_x},
fetch_list=fetch_targets)
probs.append(results)
for i in xrange(len(probs)):
print(probs[i][0] * 1000)
print('Predicted price: ${0}'.format(probs[i][0] * 1000))
def main():
# Directory for saving the trained model
save_dirname = "fit_a_line.inference.model"
train(save_dirname)
infer(save_dirname)
if __name__=="__main__":
main()
import paddle
import paddle.fluid as fluid
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
place = fluid.CPUPlace()
exe = fluid.Executor(place=place)
feeder = fluid.DataFeeder(place=place, feed_list=[x])
with fluid.scope_guard(fluid.core.Scope()):
parameter_model = paddle.dataset.uci_housing.fluid_model()
[inference_program, feed_target_names,fetch_targets] = \
fluid.io.load_inference_model(parameter_model, exe)
predict_reader = paddle.batch(paddle.dataset.uci_housing.predict_reader(), batch_size=20)
results = []
for data in predict_reader():
result = exe.run(inference_program,
feed=feeder.feed(data),
fetch_list=fetch_targets)
results.append(result)
for res in results:
for i in xrange(len(res[0])):
print 'Predicted price: ${:,.2f}'.format(res[0][i][0] * 1000)
Run :code:`python housing.py` and voila! It should print out a list of predictions
for the test housing data.
python/paddle/dataset/uci_housing.py
浏览文件 @
554cea68
...
...
@@ -19,7 +19,11 @@ https://archive.ics.uci.edu/ml/machine-learning-databases/housing/ and
parse training set and test set into paddle reader creators.
"""
import
os
import
numpy
as
np
import
tempfile
import
tarfile
import
os
import
paddle.dataset.common
...
...
@@ -34,8 +38,9 @@ feature_names = [
UCI_TRAIN_DATA
=
None
UCI_TEST_DATA
=
None
URL_MODEL
=
'https://github.com/PaddlePaddle/book/raw/develop/01.fit_a_line/fit_a_line.tar'
MD5_MODEL
=
'52fc3da8ef3937822fcdd87ee05c0c9b'
FLUID_URL_MODEL
=
'https://github.com/PaddlePaddle/book/raw/develop/01.fit_a_line/fluid/fit_a_line.fluid.tar'
FLUID_MD5_MODEL
=
'6e6dd637ccd5993961f68bfbde46090b'
def
feature_range
(
maximums
,
minimums
):
...
...
@@ -112,6 +117,33 @@ def test():
return
reader
def
fluid_model
():
parameter_tar
=
paddle
.
dataset
.
common
.
download
(
FLUID_URL_MODEL
,
'uci_housing'
,
FLUID_MD5_MODEL
,
'fit_a_line.fluid.tar'
)
tar
=
tarfile
.
TarFile
(
parameter_tar
,
mode
=
'r'
)
dirpath
=
tempfile
.
mkdtemp
()
tar
.
extractall
(
path
=
dirpath
)
return
dirpath
def
predict_reader
():
"""
UCI_HOUSING test set creator.
It returns a reader creator, each sample in the reader is features after
normalization and price number.
:return: Test reader creator
:rtype: callable
"""
global
UCI_TEST_DATA
load_data
(
paddle
.
dataset
.
common
.
download
(
URL
,
'uci_housing'
,
MD5
))
def
reader
():
for
d
in
UCI_TEST_DATA
:
yield
(
d
[:
-
1
],)
return
reader
def
fetch
():
paddle
.
dataset
.
common
.
download
(
URL
,
'uci_housing'
,
MD5
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录