PaddlePaddle框架的安裝以及簡單例子

百度一直使用自己開發的一個深度學習框架Padddle,以前沒有接觸過,最近剛好有機會來學習一下,先來看一下它怎麼安裝。

PaddlePaddle框架的安裝以及簡單例子

一、安裝百度的深度學習框架Paddle

使用官方提供的pip命令安裝

pip install paddlepaddle-gpu

發現會出現下面的問題

PaddlePaddle框架的安裝以及簡單例子

使用pip命令安裝一直報錯,可以選擇下載whl包安裝。

使用whl包安裝

(1)下載安裝包

網址:https://pypi.doubanio.com/simple/

PaddlePaddle框架的安裝以及簡單例子

在上面網頁中找到paddlepaddle和paddlepaddle-gpu,這是cpu和gpu的安裝包,選擇需要安裝的點進去,我需要安裝GPU版本的,所以選擇paddlepaddle-gpu。

PaddlePaddle框架的安裝以及簡單例子

在這個網址下選擇你需要的安裝包下載,注意python版本和cp後數字一致,CUDA版本和cuDnn版本和post後數字一致,不一致可能會報錯。

(2)在命令行下使用pip install "name+.whl"安裝paddle。

(3)測試安裝,安裝完後使用import paddle導入paddle包,沒有報錯則安裝成功了,下一步開始學習吧。

二、Paddlepaddle框架的使用

看一下官方給出的例子

(1)導入Paddlepaddle,配置網絡

# Include libraries.import paddle
import paddle.fluid as fluid
import numpy

# Configure the neural network.
def net(x, y):
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)
return y_predict, avg_cost

(2)定義訓練和預測函數

# Include libraries.import paddle
import paddle.fluid as fluid
import numpy

# Configure the neural network.
def net(x, y):
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)
return y_predict, avg_cost

# Define train function.
def train(save_dirname):
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
y_predict, avg_cost = net(x, y)
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
sgd_optimizer.minimize(avg_cost)
train_reader = paddle.batch(
paddle.reader.shuffle(paddle.dataset.uci_housing.train(), buf_size=500),
batch_size=20)
place = fluid.CPUPlace()
exe = fluid.Executor(place)

def train_loop(main_program):
feeder = fluid.DataFeeder(place=place, feed_list=[x, y])
exe.run(fluid.default_startup_program())

PASS_NUM = 1000
for pass_id in range(PASS_NUM):
total_loss_pass = 0

for data in train_reader():
avg_loss_value, = exe.run(
main_program, feed=feeder.feed(data), fetch_list=[avg_cost])
total_loss_pass += avg_loss_value
if avg_loss_value < 5.0:
if save_dirname is not None:
fluid.io.save_inference_model(
save_dirname, ['x'], [y_predict], exe)
return
print("Pass %d, total avg cost = %f" % (pass_id, total_loss_pass))
t
rain_loop(fluid.default_main_program())

# Infer by using provided test data.
def infer(save_dirname=None):
place = fluid.CPUPlace()
exe = fluid.Executor(place)
inference_scope = fluid.core.Scope()
with fluid.scope_guard(inference_scope):
[inference_program, feed_target_names, fetch_targets] = (
fluid.io.load_inference_model(save_dirname, exe))
test_reader = paddle.batch(paddle.dataset.uci_housing.test(), batch_size=20)
test_data = test_reader().next()
test_feat = numpy.array(map(lambda x: x[0], test_data)).astype("float32")
test_label = numpy.array(map(lambda x: x[1], test_data)).astype("float32")
results = exe.run(inference_program,
feed={feed_target_names[0]: numpy.array(test_feat)},
fetch_list=fetch_targets)
print("infer results: ", results[0])
print("ground truth: ", test_label)

(3)執行訓練和預測

# Include libraries.import paddle
import paddle.fluid as fluid
import numpy

# Configure the neural network.
def net(x, y):
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)
return y_predict, avg_cost

# Define train function.
def train(save_dirname):
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
y_predict, avg_cost = net(x, y)

sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
sgd_optimizer.minimize(avg_cost)
train_reader = paddle.batch(
paddle.reader.shuffle(paddle.dataset.uci_housing.train(), buf_size=500),
batch_size=20)
place = fluid.CPUPlace()
exe = fluid.Executor(place)

def train_loop(main_program):
feeder = fluid.DataFeeder(place=place, feed_list=[x, y])
exe.run(fluid.default_startup_program())
PASS_NUM = 1000
for pass_id in range(PASS_NUM):
total_loss_pass = 0
for data in train_reader():
avg_loss_value, = exe.run(
main_program, feed=feeder.feed(data), fetch_list=[avg_cost])
total_loss_pass += avg_loss_value
if avg_loss_value < 5.0:
if save_dirname is not None:
fluid.io.save_inference_model(
save_dirname, ['x'], [y_predict], exe)
return
print("Pass %d, total avg cost = %f" % (pass_id, total_loss_pass))

train_loop(fluid.default_main_program())

# Infer by using provided test data.
def infer(save_dirname=None):
place = fluid.CPUPlace()
exe = fluid.Executor(place)
inference_scope = fluid.core.Scope()
with fluid.scope_guard(inference_scope):
[inference_program, feed_target_names, fetch_targets] = (
fluid.io.load_inference_model(save_dirname, exe))
test_reader = paddle.batch(paddle.dataset.uci_housing.test(), batch_size=20)
test_data = test_reader().next()
test_feat = numpy.array(map(lambda x: x[0], test_data)).astype("float32")
test_label = numpy.array(map(lambda x: x[1], test_data)).astype("float32")
results = exe.run(inference_program,
feed={feed_target_names[0]: numpy.array(test_feat)},
fetch_list=fetch_targets)
print("infer results: ", results[0])
print("ground truth: ", test_label)


# Run train and infer.
if __name__ == "__main__":
save_dirname = "fit_a_line.inference.model"
train(save_dirname)

infer(save_dirname)

AI深度學習求索 | 關注更多AI前沿技術


分享到:


相關文章: