You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.3 KiB
72 lines
2.3 KiB
# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserve.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import paddle.v2 as paddle
|
|
import numpy as np
|
|
|
|
# init paddle
|
|
paddle.init(use_gpu=False)
|
|
|
|
# network config
|
|
x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(2))
|
|
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)
|
|
|
|
# create parameters
|
|
parameters = paddle.parameters.create(cost)
|
|
# create optimizer
|
|
optimizer = paddle.optimizer.Momentum(momentum=0)
|
|
# create trainer
|
|
trainer = paddle.trainer.SGD(cost=cost,
|
|
parameters=parameters,
|
|
update_equation=optimizer)
|
|
|
|
|
|
# event_handler to print training info
|
|
def event_handler(event):
|
|
if isinstance(event, paddle.event.EndIteration):
|
|
if event.batch_id % 1 == 0:
|
|
print "Pass %d, Batch %d, Cost %f" % (event.pass_id, event.batch_id,
|
|
event.cost)
|
|
# product model every 10 pass
|
|
if isinstance(event, paddle.event.EndPass):
|
|
if event.pass_id % 10 == 0:
|
|
with open('params_pass_%d.tar' % event.pass_id, 'w') as f:
|
|
trainer.save_parameter_to_tar(f)
|
|
|
|
|
|
# define training dataset reader
|
|
def train_reader():
|
|
train_x = np.array([[1, 1], [1, 2], [3, 4], [5, 2]])
|
|
train_y = np.array([[-2], [-3], [-7], [-7]])
|
|
|
|
def reader():
|
|
for i in xrange(train_y.shape[0]):
|
|
yield train_x[i], train_y[i]
|
|
|
|
return reader
|
|
|
|
|
|
# define feeding map
|
|
feeding = {'x': 0, 'y': 1}
|
|
|
|
# training
|
|
trainer.train(
|
|
reader=paddle.batch(
|
|
train_reader(), batch_size=1),
|
|
feeding=feeding,
|
|
event_handler=event_handler,
|
|
num_passes=100)
|