溫馨提示×

PaddlePaddle中怎么用Executor訓(xùn)練和推理模型

小億
92
2024-03-18 15:32:59

在PaddlePaddle中,可以使用Executor來進(jìn)行模型的訓(xùn)練和推理。Executor是PaddlePaddle中的一個執(zhí)行器,它可以執(zhí)行計算圖中的操作,并在各種設(shè)備(CPU、GPU)上進(jìn)行模型的訓(xùn)練和推理。

下面是一個使用Executor進(jìn)行模型訓(xùn)練和推理的示例代碼:

import paddle.fluid as fluid
import numpy as np

# 定義一個簡單的線性回歸模型
x = fluid.layers.data(name='x', shape=[1], dtype='float32')
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
y_predict = fluid.layers.fc(input=x, size=1, act=None)

# 定義損失函數(shù)和優(yōu)化器
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_cost = fluid.layers.mean(cost)
optimizer = fluid.optimizer.SGD(learning_rate=0.001)
optimizer.minimize(avg_cost)

# 創(chuàng)建一個執(zhí)行器
place = fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())

# 創(chuàng)建訓(xùn)練數(shù)據(jù)
train_data = np.array([[1.0], [2.0], [3.0], [4.0]]).astype('float32')
label_data = np.array([[2.0], [4.0], [6.0], [8.0]]).astype('float32')

# 開始訓(xùn)練模型
for i in range(1000):
    outs = exe.run(feed={'x': train_data, 'y': label_data}, fetch_list=[avg_cost])
    if i % 100 == 0:
        print("iter={}, cost={}".format(i, outs[0]))

# 使用訓(xùn)練好的模型進(jìn)行推理
test_data = np.array([[5.0]]).astype('float32')
result = exe.run(feed={'x': test_data}, fetch_list=[y_predict])
print("預(yù)測結(jié)果為:", result[0])

在上面的代碼中,我們首先定義了一個簡單的線性回歸模型,然后創(chuàng)建了一個Executor對象,并利用它執(zhí)行了模型的訓(xùn)練和推理過程。在訓(xùn)練過程中,我們使用Executor的run方法來運行訓(xùn)練數(shù)據(jù),優(yōu)化模型參數(shù);在推理過程中,我們使用Executor的run方法來運行測試數(shù)據(jù),獲取模型輸出。

0