简单例子 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)
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])