官术网_书友最值得收藏!

1.3 PaddlePaddle

PaddlePaddle是百度開源的深度學習庫,2016年9月27日,百度宣布其全新的深度學習開源平臺PaddlePaddle在開源社區GitHub及百度大腦平臺開放,供廣大開發者下載使用。百度成為繼Google、Facebook、IBM后另一個將人工智能技術開源的科技巨頭,同時也是國內首個開源深度學習平臺的科技公司。PaddlePaddle的前身是百度于2013年自主研發的深度學習平臺Paddle(Parallel Distributed Deep Learning,并行分布式深度學習),且一直為百度內部工程師研發使用。全球各大科技巨頭開源的深度學習平臺都極具各自的技術特點。百度由于其自身在搜索、圖像識別、語音語義識別理解、情感分析、機器翻譯、用戶畫像推薦等多領域都有業務應用,PaddlePaddle則表現得更加全面,是一個相對全功能的深度學習框架。目前,PaddlePaddle已實現CPU/GPU單機和分布式模式,同時支持海量數據訓練、數百臺機器并行運算,以應對大規模的數據訓練。此外,PaddlePaddle具備高質量GPU代碼,提供了機器翻譯、推薦、圖像分類、情感分析等功能。

目前,PaddlePaddle已在百度30多項主要產品和服務之中發揮著作用,如外賣的預估出餐時間、預判網盤故障時間點、精準推薦用戶所需信息、海量圖像識別分類、字符識別、病毒和垃圾信息檢測、機器翻譯和自動駕駛等領域。以外賣行業為例,外賣員等待商家出餐的時間耗時嚴重,百度將不同時段商家的客流量、菜品的制作時間和訂單量等數據交給了PaddlePaddle,經過對海量數據的深度學習處理,如今,百度外賣的內部系統可以預估每個商家菜品出餐時間,及時告知外賣員,提高了送餐效率,系統也可以更加合理地規劃取餐和送餐的路線http://tech.sina.com.cn/i/2016-09-27/doc-ifxwevmc5593979.shtml

1.3.1 安裝

PaddlePaddle提供數個預編譯的二進制文件來進行安裝,包括Docker鏡像和Ubuntu的deb安裝包等。

1.基于Docker容器使用方式

PaddlePaddle的編譯環境打包成了一個鏡像,稱為開發鏡像,里面涵蓋了PaddlePaddle需要的所有編譯工具。編譯出來的PaddlePaddle也打包成一個鏡像,稱為生產鏡像,里面涵蓋了運行所需的所有環境。每次發布新版本的時候都會發布對應版本的生產鏡像以及開發鏡像。運行鏡像包括純CPU版本和GPU版本及其對應的非AVX版http://www.paddlepaddle.org/doc_cn/getstarted/build_and_install/docker_install_cn.html。

交互方式運行開發鏡像:

        docker run -it --rm paddlepaddle/paddle:<version>-dev /bin/bash

后臺進程方式運行容器:

        docker run -d -p 2202:22-p 8888:8888 paddledev/paddle:<version>-dev

然后用密碼root SSH進入容器:

        ssh -p 2202 root@localhost

2. Ubuntu部署PaddlePaddle

安裝包的下載地址是:

        https://github.com/PaddlePaddle/Paddle/releases

它包含4個版本:

? CPU版本:支持主流X86處理器平臺,使用了AVX指令集。

? CPU-NOAVX版本:支持主流X86處理器平臺,沒有使用AVX指令集。

? GPU版本:支持主流X86處理器平臺,支持NVIDIA CUDA平臺,使用了AVX指令集。

? GPU-NOAVX版本:支持主流X86處理器平臺,支持NVIDIA CUDA平臺,沒有使用AVX指令集。

下載完相關安裝包后,執行如下命令:

        sudo apt-get install gdebi gdebi paddle-*-cpu.deb

或者如下命令:

        dpkg -i paddle-*-cpu.deb apt-get install -f

在用dpkg -i的時候如果報一些依賴未找到的錯誤是正常的,在apt-get install -f里會繼續安裝PaddlePaddle。

安裝完成后,可以使用命令paddle version查看安裝后的Paddle版本http://www.paddlepaddle.org/doc_cn/getstarted/build_and_install/ubuntu_install_cn.html

        PaddlePaddle 0.8.0b1, compiled with
        with_avx: ON
        with_gpu: OFF
        with_double: OFF
        with_python: ON
        with_rdma: OFF
        with_timer: OFF
        with_predict_sdk:

1.3.2 使用舉例

以識別MNIST數據集為例,關于MNIST數據集的詳細介紹請參考本書第5章。

下面代碼實現了一個含有兩個隱藏層的多層感知器,其中兩個隱藏層的激活函數均采用ReLU,輸出層的激活函數用Softmax:

        def multilayer_perceptron(img):
            hidden1 = paddle.layer.fc(input=img, size=128,
                act=paddle.activation.Relu())
            hidden2 = paddle.layer.fc(input=hidden1,  size=64,
                act=paddle.activation.Relu())
                predict = paddle.layer.fc(input=hidden2,
                    size=10,   act=paddle.activation.Softmax())
            return predict

通過layer.data調用來獲取數據,然后調用分類器得到分類結果。訓練時,對該結果計算其損失函數,分類問題常常選擇交叉熵損失函數:

        paddle.init(use_gpu=False, trainer_count=1)
        images = paddle.layer.data(     name='pixel',     type=paddle.data_type.dense_
            vector(784)  )
        label = paddle.layer.data(       name='label', type=paddle.data_type.integer_
            value(10))
        predict = multilayer_perceptron(images) #多層感知器
        cost = paddle.layer.classification_cost(input=predict, label=label)

訓練過程是完全自動的,event_handler里打印的日志如下所示,最后準確率為97.66%:

        # Pass 0, Batch 0, Cost 2.780790, {'classification_error_evaluator': 0.9453125} # Pass
            0, Batch 100, Cost 0.635356, {'classification_error_evaluator': 0.2109375} # Pass 0,
            Batch 200, Cost 0.326094, {'classification_error_evaluator': 0.1328125} # Pass 0,
            Batch 300, Cost 0.361920, {'classification_error_evaluator': 0.1015625} # Pass 0,
            Batch 400, Cost 0.410101, {'classification_error_evaluator': 0.125} # Test with
            Pass 0, Cost 0.326659, {'classification_error_evaluator': 0.09470000118017197}
主站蜘蛛池模板: 临汾市| 富宁县| 陆川县| 财经| 无锡市| 邛崃市| 岗巴县| 乌苏市| 武夷山市| 衡山县| 伊川县| 大冶市| 天全县| 五指山市| 梁平县| 高要市| 新邵县| 张家口市| 合江县| 屏南县| 广平县| 内丘县| 义马市| 东丽区| 通海县| 盐亭县| 遂溪县| 永丰县| 吉林市| 曲松县| 汨罗市| 保山市| 阿拉尔市| 泸州市| 梁河县| 突泉县| 漳平市| 保山市| 壤塘县| 鹿泉市| 乐陵市|