PaddlePaddle Perceptron Example

 

简单例子 y = 2x + 0.05

 

首先加载需要的包

In [2]:
import paddle.v2 as paddle
import numpy as np
 

初始化PaddlePaddle

In [3]:
paddle.init(use_gpu=False, trainer_count=1)
 

模型结构

In [4]:
x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(1))
y_predict = paddle.layer.fc(input=x,
                                size=1,
                                act=paddle.activation.Linear())
y = paddle.layer.data(name='y', type=paddle.data_type.dense_vector(1))
cost = paddle.layer.square_error_cost(input=y_predict, label=y)
 

保存网络拓扑(optional)

In [24]:
# Save the inference topology to protobuf.
inference_topology = paddle.topology.Topology(layers=y_predict)
with open("inference_topology.pkl", 'wb') as f:
    inference_topology.serialize_for_inference(f)
 

创建参数

In [25]:
parameters = paddle.parameters.create(cost)
 

创建Trainer

In [26]:
optimizer = paddle.optimizer.Momentum(momentum=0)

trainer = paddle.trainer.SGD(cost=cost,
                             parameters=parameters,
                             update_equation=optimizer)
In [27]:
feeding={'x': 0, 'y': 1}

# define training dataset reader
def train_reader():
    #d =uci_housing.train()()
    dat = np.random.randn(100) 
    def reader():
        for d in dat:
            yield np.array([d]),np.array([(d*2+0.05)]) # y:2x + 5 

    return reader
In [29]:
trainer.train(
    reader= paddle.batch(train_reader(), batch_size=10),
    feeding=feeding,
    num_passes=100)
 

应用模型

1. 生成测试数据

In [30]:
test_data_creator = train_reader()
test_data = []

for item in test_data_creator():
    test_data.append((item[0],))
    if len(test_data) == 10:
        break
 

2. 推测 inference

In [31]:
probs = paddle.infer(
    output_layer=y_predict, parameters=parameters, input=test_data)

for i in xrange(len(probs)):
    print "x=" + str(test_data[i]) + ", predict=" + str(probs[i][0])
 
x=(array([ 1.19117966]),), predict=2.43236
x=(array([ 1.03761235]),), predict=2.12522
x=(array([ 1.41373377]),), predict=2.87746
x=(array([-0.19559635]),), predict=-0.341192
x=(array([ 1.49282158]),), predict=3.03564
x=(array([ 0.1219947]),), predict=0.293989
x=(array([-1.27387922]),), predict=-2.49776
x=(array([ 2.01031024]),), predict=4.07062
x=(array([ 1.89486369]),), predict=3.83972
x=(array([ 0.55526183]),), predict=1.16052
原文地址:https://www.cnblogs.com/freebird92/p/8485594.html