paddlepaddle中的dataset已经预置了波士顿房价的数据值,本demo仅测试了paddlepaddle的基本框架。参考官方aistudio后,train代码如下:
import paddle
import paddle.fluid as fluid
import numpy as np
import os
import matplotlib.pyplot as plt
BUF_SIZE = 500
BATCH_SIZE = 20
train_reader = paddle.batch(
paddle.reader.shuffle(paddle.dataset.uci_housing.train(), buf_size=BUF_SIZE),
batch_size=BATCH_SIZE
)
test_reader = paddle.batch(
paddle.reader.shuffle(paddle.dataset.uci_housing.test(), buf_size=BUF_SIZE),
batch_size=BATCH_SIZE
)
x = fluid.layers.data(name='x', shape=[13], dtype="float32")
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
y_predict = fluid.layers.fc(input=x, size=1, act=None)
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_cost = fluid.layers.mean(cost)
optimizer = fluid.optimizer.SGDOptimizer(learning_rate=0.001)
opts = optimizer.minimize(avg_cost)
test_program = fluid.default_main_program().clone(for_test=True)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
feeder = fluid.DataFeeder(place=place, feed_list=[x, y])
MAX_EPOCH_NUMBER = 100
MODEL_SAVE_DIR = r"C:\Users\17692\Desktop\paddleDemo\model"
pltx = []
plty = []
for i in range(MAX_EPOCH_NUMBER):
for batch_id, data in enumerate(train_reader()):
train_cost = exe.run(program=fluid.default_main_program(), feed=feeder.feed(data), fetch_list=[avg_cost])
# print("train : id = " + str(i) + " cost = " + str(train_cost[0][0]))
for batch_id, data in enumerate(test_reader()):
test_cost = exe.run(program=test_program, feed=feeder.feed(data), fetch_list=[avg_cost])
# print("test : id = " + str(i) + " cost = " + str(test_cost[0][0]))
pltx.append(i)
plty.append(test_cost[0][0])
if not os.path.exists(MODEL_SAVE_DIR):
os.makedirs(MODEL_SAVE_DIR)
plt.plot(pltx, plty)
plt.savefig("test", dpi=600)
fluid.io.save_inference_model(MODEL_SAVE_DIR, ['x'], [y_predict], exe)