paddlepaddle使用(一)


paddlepaddle是百度提出來的深度學習的框架,個人感覺其實和tensorflow差不多(語法上面),因為本人也是初學者,也不是很懂tensorflow,所以,這些都是個人觀點。

百度的paddlepaddle提出貌似有一段時間了,我是最近才知道的,好奇去看了看,而且最近在看tensorflow,所以想看看paddlepaddle是不是友好一點,說實話,tensorflow還是比較難懂的(對於個人來說)。感覺paddlepaddle比tensorflow好的地方在於,paddlepaddle有百度的工程師給出對應視頻和代碼進行講解,對於入門深度學習比較好。

以下就是paddlepaddle的第一講,利用波士頓房價講解線性回歸。

模型訓練:

#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import os
import paddle.v2 as paddle
import paddle.v2.dataset.uci_housing as uci_housing

with_gpu = os.getenv('WITH_GPU', '0') != '0'


def main():
# 初始化PaddlePaddle
paddle.init(use_gpu=with_gpu, trainer_count=1)

# 模型配置
x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13))#利用前13因數來預測房價
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)#損失函數

# 保存網絡拓撲
inference_topology = paddle.topology.Topology(layers=y_predict)
with open("inference_topology.pkl", 'wb') as f:
inference_topology.serialize_for_inference(f)

# 創建參數
parameters = paddle.parameters.create(cost)

# 創建trainer
optimizer = paddle.optimizer.Momentum(momentum=0)#learning_rate=0.0001 學習率

trainer = paddle.trainer.SGD(
cost=cost, parameters=parameters, update_equation=optimizer)#隨機梯度下降算法

feeding = {'x': 0, 'y': 1}

# 讀取數據且打印訓練的中間信息
def event_handler(event):
if isinstance(event, paddle.event.EndIteration):
if event.batch_id % 100 == 0:
print "Pass %d, Batch %d, Cost %f" % (
event.pass_id, event.batch_id, event.cost)

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)
result = trainer.test(
reader=paddle.batch(uci_housing.test(), batch_size=2),
feeding=feeding)#讀取房價數據,將數據打亂,每次取出2條
print "Test %d, Cost %f" % (event.pass_id, result.cost)

# 開始訓練
trainer.train(
reader=paddle.batch(
paddle.reader.shuffle(uci_housing.train(), buf_size=500),
batch_size=2),
feeding=feeding,
event_handler=event_handler,#提供一個 event_handler,來打印訓練的進度:
num_passes=30)

# 生成測試數據
test_data_creator = paddle.dataset.uci_housing.test()
test_data = []
test_label = []

#取出測試集中5條數據用於最后的預測
for item in test_data_creator():
test_data.append((item[0], ))
test_label.append(item[1])
if len(test_data) == 5:
break


#推測inference
probs = paddle.infer(
output_layer=y_predict, parameters=parameters, input=test_data)

for i in xrange(len(probs)):
print "label=" + str(test_label[i][0]) + ", predict=" + str(probs[i][0])


if __name__ == '__main__':
main()

運行結果:

Pass 0, Batch 0, Cost 886.077026
Pass 0, Batch 100, Cost 236.768433
Pass 0, Batch 200, Cost 555.669922
Test 0, Cost 56.372781
Pass 1, Batch 0, Cost 558.157104
Pass 1, Batch 100, Cost 17.486526
Pass 1, Batch 200, Cost 49.110359
Test 1, Cost 22.666769
Pass 2, Batch 0, Cost 2.017142
Pass 2, Batch 100, Cost 5.376208
Pass 2, Batch 200, Cost 1.576212
Test 2, Cost 18.296844
Pass 3, Batch 0, Cost 103.864586
Pass 3, Batch 100, Cost 84.158134
Pass 3, Batch 200, Cost 5.564497
Test 3, Cost 17.668033
Pass 4, Batch 0, Cost 2.316584
Pass 4, Batch 100, Cost 9.555552
Pass 4, Batch 200, Cost 74.418373
Test 4, Cost 17.311696
Pass 5, Batch 0, Cost 9.540855
Pass 5, Batch 100, Cost 22.676167
Pass 5, Batch 200, Cost 123.998085
Test 5, Cost 16.799527
Pass 6, Batch 0, Cost 56.558044
Pass 6, Batch 100, Cost 33.035114
Pass 6, Batch 200, Cost 58.189980
Test 6, Cost 16.333503
Pass 7, Batch 0, Cost 7.590010
Pass 7, Batch 100, Cost 34.771137
Pass 7, Batch 200, Cost 44.883244
Test 7, Cost 16.017060
Pass 8, Batch 0, Cost 42.311310
Pass 8, Batch 100, Cost 24.567163
Pass 8, Batch 200, Cost 33.340485
Test 8, Cost 15.520346
Pass 9, Batch 0, Cost 178.452744
Pass 9, Batch 100, Cost 10.791793
Pass 9, Batch 200, Cost 0.137641
Test 9, Cost 15.214742
Pass 10, Batch 0, Cost 10.072014
Pass 10, Batch 100, Cost 11.594021
Pass 10, Batch 200, Cost 24.404564
Test 10, Cost 14.916112
Pass 11, Batch 0, Cost 5.649694
Pass 11, Batch 100, Cost 31.902603
Pass 11, Batch 200, Cost 11.218608
Test 11, Cost 14.600422
Pass 12, Batch 0, Cost 87.761772
Pass 12, Batch 100, Cost 53.684475
Pass 12, Batch 200, Cost 37.861378
Test 12, Cost 14.326864
Pass 13, Batch 0, Cost 5.141076
Pass 13, Batch 100, Cost 0.324465
Pass 13, Batch 200, Cost 2.333709
Test 13, Cost 14.124264
Pass 14, Batch 0, Cost 9.482045
Pass 14, Batch 100, Cost 22.704296
Pass 14, Batch 200, Cost 12.826228
Test 14, Cost 13.945640
Pass 15, Batch 0, Cost 41.819580
Pass 15, Batch 100, Cost 10.353182
Pass 15, Batch 200, Cost 13.374403
Test 15, Cost 13.767083
Pass 16, Batch 0, Cost 83.044785
Pass 16, Batch 100, Cost 27.363625
Pass 16, Batch 200, Cost 5.347357
Test 16, Cost 13.665516
Pass 17, Batch 0, Cost 0.994224
Pass 17, Batch 100, Cost 0.298174
Pass 17, Batch 200, Cost 140.061615
Test 17, Cost 13.568394
Pass 18, Batch 0, Cost 11.832894
Pass 18, Batch 100, Cost 8.340067
Pass 18, Batch 200, Cost 30.967430
Test 18, Cost 13.465723
Pass 19, Batch 0, Cost 15.379287
Pass 19, Batch 100, Cost 123.313614
Pass 19, Batch 200, Cost 36.328705
Test 19, Cost 13.377999
Pass 20, Batch 0, Cost 12.842525
Pass 20, Batch 100, Cost 54.218903
Pass 20, Batch 200, Cost 18.377592
Test 20, Cost 13.266518
Pass 21, Batch 0, Cost 49.386784
Pass 21, Batch 100, Cost 215.253906
Pass 21, Batch 200, Cost 0.260682
Test 21, Cost 13.237288
Pass 22, Batch 0, Cost 469.974213
Pass 22, Batch 100, Cost 8.073731
Pass 22, Batch 200, Cost 0.810365
Test 22, Cost 13.192008
Pass 23, Batch 0, Cost 145.341141
Pass 23, Batch 100, Cost 15.787022
Pass 23, Batch 200, Cost 4.965213
Test 23, Cost 13.133022
Pass 24, Batch 0, Cost 10.377566
Pass 24, Batch 100, Cost 3.863908
Pass 24, Batch 200, Cost 15.857657
Test 24, Cost 13.113067
Pass 25, Batch 0, Cost 6.239013
Pass 25, Batch 100, Cost 15.914387
Pass 25, Batch 200, Cost 48.752701
Test 25, Cost 13.137239
Pass 26, Batch 0, Cost 57.843086
Pass 26, Batch 100, Cost 0.732344
Pass 26, Batch 200, Cost 48.501846
Test 26, Cost 13.141359
Pass 27, Batch 0, Cost 443.271545
Pass 27, Batch 100, Cost 227.696655
Pass 27, Batch 200, Cost 1.482114
Test 27, Cost 13.094058
Pass 28, Batch 0, Cost 11.784382
Pass 28, Batch 100, Cost 1.334578
Pass 28, Batch 200, Cost 16.487831
Test 28, Cost 13.122105
Pass 29, Batch 0, Cost 10.043719
Pass 29, Batch 100, Cost 26.890572
Pass 29, Batch 200, Cost 11.034937
Test 29, Cost 13.203439
label=8.5, predict=11.7476
label=5.0, predict=13.6822
label=11.9, predict=10.7325
label=27.9, predict=18.0696
label=17.2, predict=13.0193

房價預測:

#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import paddle.v2 as paddle

# Initialize PaddlePaddle.
paddle.init(use_gpu=False, trainer_count=1)

# Configure the neural network.
x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13))
y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear())

# Infer using provided test data.
probs = paddle.infer(
    output_layer=y_predict,
    parameters=paddle.dataset.uci_housing.model(),
    input=[item for item in paddle.dataset.uci_housing.test()()])

for i in xrange(len(probs)):
    print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000)

運行結果

Predicted price: $12,316.63
Predicted price: $13,830.34
Predicted price: $11,499.34
Predicted price: $17,395.05
Predicted price: $13,317.67
Predicted price: $16,834.08
Predicted price: $16,632.04
Predicted price: $15,384.20
Predicted price: $7,697.38
Predicted price: $13,657.83
Predicted price: $6,329.62
Predicted price: $12,153.18
Predicted price: $13,890.60
Predicted price: $11,367.41
Predicted price: $13,269.13
Predicted price: $14,979.35
Predicted price: $17,539.03
Predicted price: $16,686.41
Predicted price: $16,810.74
Predicted price: $13,620.53
Predicted price: $14,720.09
Predicted price: $12,533.42
Predicted price: $15,835.49
Predicted price: $16,064.76
Predicted price: $14,566.97
Predicted price: $13,783.11
Predicted price: $16,211.73
Predicted price: $16,362.79
Predicted price: $18,183.92
Predicted price: $16,298.03
Predicted price: $16,084.58
Predicted price: $14,406.07
Predicted price: $15,309.62
Predicted price: $12,104.60
Predicted price: $9,865.44
Predicted price: $14,116.36
Predicted price: $14,552.37
Predicted price: $16,381.32
Predicted price: $16,992.90
Predicted price: $16,722.93
Predicted price: $13,468.48
Predicted price: $13,622.97
Predicted price: $16,512.31
Predicted price: $17,004.60
Predicted price: $16,492.97
Predicted price: $16,179.70
Predicted price: $15,989.17
Predicted price: $17,289.17
Predicted price: $16,975.07
Predicted price: $18,950.22
Predicted price: $15,513.54
Predicted price: $15,652.08
Predicted price: $14,162.51
Predicted price: $14,665.31
Predicted price: $16,724.47
Predicted price: $17,369.51
Predicted price: $17,330.55
Predicted price: $17,923.71
Predicted price: $18,018.71
Predicted price: $19,392.96
Predicted price: $18,379.00
Predicted price: $17,187.61
Predicted price: $14,920.71
Predicted price: $15,435.08
Predicted price: $16,458.07
Predicted price: $17,390.93
Predicted price: $17,520.05
Predicted price: $18,763.72
Predicted price: $18,698.70
Predicted price: $20,425.67
Predicted price: $15,431.77
Predicted price: $14,803.56
Predicted price: $17,336.69
Predicted price: $13,052.34
Predicted price: $16,874.23
Predicted price: $18,547.62
Predicted price: $19,574.30
Predicted price: $21,303.89
Predicted price: $22,053.60
Predicted price: $18,862.40
Predicted price: $17,969.15
Predicted price: $19,496.96
Predicted price: $17,676.56
Predicted price: $18,699.87
Predicted price: $14,520.48
Predicted price: $12,410.05
Predicted price: $9,987.12
Predicted price: $15,381.11
Predicted price: $16,906.17
Predicted price: $21,538.57
Predicted price: $21,566.74
Predicted price: $19,905.33
Predicted price: $17,938.98
Predicted price: $20,776.08
Predicted price: $21,715.28
Predicted price: $20,169.60
Predicted price: $21,148.05
Predicted price: $22,589.09
Predicted price: $21,913.31
Predicted price: $24,388.41
Predicted price: $23,748.72
Predicted price: $22,013.94

來源:paddlepaddle官網、以上代碼對應的視頻講解地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM