<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          模型轉(zhuǎn)換、模型壓縮、模型加速工具匯總

          共 18805字,需瀏覽 38分鐘

           ·

          2021-02-28 19:59






          向AI轉(zhuǎn)型的程序員都關(guān)注了這個號??????

          人工智能大數(shù)據(jù)與深度學(xué)習(xí) ?公眾號:datayx



          目錄

            • 1、Halide

            • 2、TACO

            • 3、weld

            • 4、ATLAS

            • 5、TensorComprehensions

            • 6、opentuner

            • 1、模型壓縮加速工具的作用

            • 2、模型壓縮加速工具簡介


            • 1、PocketFlow

            • 3、distiller

            • 4、TVM

            • 5、tflite

            • 6、ncnn

            • 7、MNN

            • 8、OpenVIO

            • 9、Tengine

            • 10、ARMNN

            • 11、Paddle Lite

            • 12、FeatherCNN

            • 13、DNNL

            • 14、MACE

            • 15、SNPE

            • 16、model-compression

            • 17、MediaPipe

            • 18、Glow

            • 19、TNN

            • 20、Tengine Lite

            • 21、rknn與rknpu

            • 1、模型轉(zhuǎn)換工具的作用

            • 2、模型轉(zhuǎn)換工具簡介


            • 1、MMdnn

            • 2、 ONNX

            • 3、 X2Paddle

            • 一、場景需求解讀

            • 二、模型轉(zhuǎn)化工具匯總


            • 三、模型壓縮和加速工具匯總


            • 四、其它加速工具


            • 參考資料

            • 注意事項


          一、場景需求解讀

          ??在現(xiàn)實場景中,我們經(jīng)常會遇到這樣一個問題,即某篇論文的結(jié)果很棒,但是作者提供的訓(xùn)練模型是使用pytorch訓(xùn)練的,而我自己卻比較擅長用tensorflow,我想要使用該模型做一些其它的項目。那么很多人就會采取一種方式,去閱讀別人的論文、理解別人的代碼,然后使用自己熟悉的工具進行代碼重現(xiàn)、重新訓(xùn)練一個模型。這個階段會耗用大量的人力和物力,最終還不能保證一定能得到論文的效果。本文即將介紹的幾個模型轉(zhuǎn)換的工具就可以很好的幫你解決你的這個問題,比較有名的包括mmdnn、onnx等。
          ??除此之外,我們的目的是將深度學(xué)習(xí)模型應(yīng)用到現(xiàn)實場景中的任務(wù)中,但是現(xiàn)實場景中的硬件五花八門,包含著大多數(shù)的算力不足的設(shè)備,以ARM處理處居多。那么這里面就涉及到了一個問題,即使你說你的模型有多牛逼,但是如果你的模型比較大,需要大量的算力才能跑起來,那么對于應(yīng)用場景而言,你這個算法其實沒有多少利用價值的。為了將使用N卡的GPU訓(xùn)練出來的模型成功的部署在這些低功耗的設(shè)備上面,我們通常需要對這些模型進行模型壓縮和模型加速操作,比較有名的幾個工具包括TensorRT、PocketFlow、TVM等。

          二、模型轉(zhuǎn)化工具匯總

          1、模型轉(zhuǎn)換工具的作用

          ??簡而言之,模型轉(zhuǎn)換工具的作用是:將使用不同訓(xùn)練框架訓(xùn)練出來的模型相互聯(lián)系起來,用戶可以進行快速的轉(zhuǎn)換,節(jié)省了大量的人力和物力花銷。

          2、模型轉(zhuǎn)換工具簡介

          1、MMdnn

          官網(wǎng)鏈接
          ??上圖展示了MMdnn的主要功能。MMDNN是一套幫助用戶在不同的深度學(xué)習(xí)框架之間進行交互操作的工具。例如,模型轉(zhuǎn)換和可視化。轉(zhuǎn)換caffe、keras、mxnet、tensorflow、cntk、pytorch onnx和coreml之間的模型。?簡而言之,通過這個工具,我們可以方便的將某一個框架訓(xùn)練出來的模型轉(zhuǎn)換成另外一個框架所支持的模型,圖中基本上包含了當(dāng)前所有主流的深度學(xué)習(xí)訓(xùn)練框架,包括Tensorflow、Pytorch、Caffe、MxNet等。除此之外,圖中包含了一個關(guān)鍵的概念,那就是Intermediate Representation-中間表示,即這個工具首先將輸入框架的模型轉(zhuǎn)換為IR,然后通過IR轉(zhuǎn)換成另外一個框架所支持的模型。

          ??上圖展示了MMdnn工具當(dāng)前所支持的模型。上面的對號表示的是你可以隨意的在不同框架之間進行該模型的轉(zhuǎn)換。

          # 將Tensorflow的resnet_v2_152模型轉(zhuǎn)換為Pytorch支持的模型
          mmdownload -f tensorflow -n resnet_v2_152 -o ./
          mmconvert -sf tensorflow -in imagenet_resnet_v2_152.ckpt.meta -iw imagenet_resnet_v2_152.ckpt --dstNodeName MMdnn_Output -df pytorch -om tf_resnet_to_pth.pth
          • 1

          • 2

          • 3

          ??上面展示了一個簡單的使用案例,通過簡單的兩行指令就可以將Tensorlfow的模型轉(zhuǎn)換為pytorch所支持的模型,是不是很方便呢!

          2、 ONNX

          官網(wǎng)鏈接
          ??ONNX是一個開放的生態(tài)系統(tǒng),它使人工智能開發(fā)者能夠隨著項目的發(fā)展選擇正確的工具。ONNX為人工智能模型提供了一種開源格式,包括深度學(xué)習(xí)和傳統(tǒng)的ML。它定義了一個可擴展的計算圖模型,以及內(nèi)置運算符和標(biāo)準(zhǔn)數(shù)據(jù)類型的定義。目前,我們關(guān)注的是推斷(評分)所需的能力。
          ??ONNX得到了廣泛的支持,它可以應(yīng)用到很多框架、工具和硬件中。它可以實現(xiàn)不同框架之間的相互轉(zhuǎn)換,并加速研究到產(chǎn)品的速度。

          ??上圖展示了ONNX所支持的一些深度學(xué)習(xí)框架,圖中包括了一些主流的框架,但是并不完善,tensorflow的身影竟然沒有出現(xiàn)。

          ??上圖展示了該工具所支持的一些Converters,不僅包括深度學(xué)習(xí)框架Tensorflow、Keras等,而且包括ML工具Scikit-learn、Xgboost、LibSVM等。

          ??上圖展示了該工具所支持的一些Runtimes(運行時),它更偏向模型的部署端,圖中包含了多個大廠,包括NVIDIA、Qualcomm、Tencent、synppsys等。

          ??上圖展示了該工具所支持的底層編譯器,包括了大名鼎鼎的TVM,下面會對該工具進行詳細的介紹。除此之外,包含了一些可視化網(wǎng)絡(luò)模型的工具,NETRON工具相當(dāng)好用,具體的細節(jié)請看這里。

          3、 X2Paddle

          官網(wǎng)鏈接
          X2Paddle支持將其余深度學(xué)習(xí)框架訓(xùn)練得到的模型,轉(zhuǎn)換至PaddlePaddle模型。一個比較小眾的工具,感興趣的請在官網(wǎng)查看具體的細節(jié),這里不再祥述。

          三、模型壓縮和加速工具匯總

          1、模型壓縮加速工具的作用

          ??簡而言之,模型壓縮加速工具的作用是:將訓(xùn)練好的模型進行壓縮和加速,然后將其部署到一些特定的設(shè)備上去,從而滿足現(xiàn)實場景的需求。

          2、模型壓縮加速工具簡介

          1、PocketFlow

          官網(wǎng)鏈接
          ??PocketFlow是一個開源框架,可以使用最少的人力壓縮和加速深度學(xué)習(xí)模型。深度學(xué)習(xí)廣泛應(yīng)用于計算機視覺、語音識別、自然語言翻譯等各個領(lǐng)域。然而,深度學(xué)習(xí)模型通常計算成本很高,這限制了在計算資源有限的移動設(shè)備上的進一步應(yīng)用。
          PocketFlow旨在為開發(fā)人員提供一個易于使用的工具包,以提高推理效率,而不會降低或降低性能。開發(fā)人員只需要指定所需的壓縮比或加速比,然后PocketFlow將自動選擇適當(dāng)?shù)某瑓?shù)來生成高效的壓縮模型以進行部署。

          ??上圖展示了PocketFlow的整個框架。該框架主要由兩類算法組件組成,即學(xué)習(xí)器和超參數(shù)優(yōu)化器,如上圖所示。給定一個未壓縮的原始模型,學(xué)習(xí)模塊使用隨機選擇的超參數(shù)組合生成一個候選壓縮模型。然后對候選模型的精度和計算效率進行評估,并將其作為反饋信號,用于確定學(xué)習(xí)模塊要探索的下一個超參數(shù)組合。經(jīng)過幾次迭代,所有候選模型中最好的一個輸出為最終的壓縮模型。

          ??上圖展示了該工具中所包含的壓縮方法。主要包括3大類:裁剪、權(quán)重稀疏和量化。

          # 對網(wǎng)絡(luò)進行裁剪操作
          ./scripts/run_seven.sh nets/resnet_at_cifar10_run.py \
          --learner channel \
          --cp_prune_option uniform \
          --cp_uniform_preserve_ratio 0.5
          # 對網(wǎng)絡(luò)進行權(quán)重稀疏操作
          ./scripts/run_local.sh nets/resnet_at_cifar10_run.py \
          --learner weight-sparse \
          --ws_prune_ratio_prtl uniform \
          --data_disk hdfs
          # 對網(wǎng)絡(luò)進行量化操作
          ./scripts/run_local.sh nets/resnet_at_cifar10_run.py \
          --learner uniform \
          --uql_use_buckets \
          --uql_bucket_type channel \
          --data_disk hdfs
          • 1

          • 2

          • 3

          • 4

          • 5

          • 6

          • 7

          • 8

          • 9

          • 10

          • 11

          • 12

          • 13

          • 14

          • 15

          • 16

          ??上面分別展示了一個網(wǎng)絡(luò)裁剪、網(wǎng)絡(luò)權(quán)重稀疏、網(wǎng)絡(luò)量化的實例。整個工具操作起來比較簡單,用戶僅僅需要確定自己需要的壓縮比或者加速比即可,工具可以通過強化學(xué)習(xí)算法來幫你找到一個最優(yōu)的結(jié)果。

          2、TensorRT
          官網(wǎng)鏈接
          ??Nvidia Tensorrt?是一個高性能深度學(xué)習(xí)推理平臺。它包括一個深度學(xué)習(xí)推理優(yōu)化器和運行時,為深度學(xué)習(xí)推理應(yīng)用程序提供低延遲和高吞吐量。在推理過程中,基于Tensorrt的應(yīng)用程序的執(zhí)行速度比僅使用CPU的平臺快40倍。使用Tensorrt,您可以優(yōu)化在所有主要框架中訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型,高精度校準(zhǔn)低精度,最后部署到超尺度數(shù)據(jù)中心、嵌入式或汽車產(chǎn)品平臺。
          ??Tensorrt建立在Nvidia的并行編程模型CUDA上,使您能夠利用CUDA-X人工智能、自主機器、高性能計算和圖形中的庫、開發(fā)工具和技術(shù),優(yōu)化所有深度學(xué)習(xí)框架的推理。
          ??Tensorrt為深度學(xué)習(xí)推理應(yīng)用程序(如視頻流、語音識別、推薦和自然語言處理)的生產(chǎn)部署提供了int8和fp16優(yōu)化。降低的精度推斷顯著降低了應(yīng)用程序延遲,這是許多實時服務(wù)、自動和嵌入式應(yīng)用程序的一項要求。

          ??上圖展示了TensorRT的整體框架。輸入到整個tensorRT中的是一個訓(xùn)練好的神經(jīng)網(wǎng)絡(luò),該工具中包含了多個優(yōu)化工具,具體包括精度矯正、動態(tài)張量內(nèi)存、層/張量融合、內(nèi)核自動微調(diào)、多級流執(zhí)行等,通過這些操作,我們可以對原始的輸入模型進行快速的壓縮和加速,從而滿足我們的需求。但是細心的你可能注意到了該工具只適合應(yīng)用在NVIDIA顯卡上,在CUDA的基礎(chǔ)上進行優(yōu)化,通用性較差?。?!

          3、distiller

          官網(wǎng)鏈接
          ??Distiller是一個用于神經(jīng)網(wǎng)絡(luò)壓縮研究的開源python包。網(wǎng)絡(luò)壓縮可以減少神經(jīng)網(wǎng)絡(luò)的內(nèi)存占用,提高其推理速度,節(jié)約能源。Distiller為原型制作和分析壓縮算法提供了一個pytorch環(huán)境,如稀疏誘導(dǎo)法和低精度算法。

          # 顯示網(wǎng)絡(luò)的稀疏度
          python3 compress_classifier.py --resume=../ssl/checkpoints/checkpoint_trained_ch_regularized_dense.pth.tar -a=resnet20_cifar ../../../data.cifar10 --summary=sparsity
          • 1

          • 2


          ??上圖展示了使用該工具來顯示某個網(wǎng)絡(luò)的稀疏度。執(zhí)行命令之后會輸出一個文本表,詳細說明參數(shù)張量的各種稀疏性。第一列是參數(shù)名,后面是它的形狀、密集模型和稀疏模型中非零元素的數(shù)量(nnz)。下一組列顯示列、行、通道、內(nèi)核、過濾器和元素的稀疏度。概括起來就是元素絕對值的標(biāo)準(zhǔn)差、平均值和平均值。

          ??上圖展示的是裁剪敏感性分析圖。該圖可以輔助你在模型壓縮的過程中快速的定位到不同網(wǎng)絡(luò)層對裁剪的敏感程度,然后有針對性的執(zhí)行一些操作。

          4、TVM

          官網(wǎng)鏈接
          ??TVM是一個針對CPU、GPU和專用加速器的開放式深度學(xué)習(xí)編譯器堆棧。它旨在縮小以生產(chǎn)力為中心的深度學(xué)習(xí)框架與以性能或效率為導(dǎo)向的硬件后端之間的差距。TVM提供以下主要功能:

          • 將keras、mxnet、pytorch、tensorflow、coreml、darknet中的深度學(xué)習(xí)模型編譯為各種硬件后端上可部署的最小模塊。

          • 自動生成和優(yōu)化更多后端上的張量運算符并提高性能的基礎(chǔ)結(jié)構(gòu)。

          ??TVM提供兩個級別的優(yōu)化。執(zhí)行高級操作員融合、布局轉(zhuǎn)換和內(nèi)存管理等任務(wù)的計算圖優(yōu)化。然后是張量運算符優(yōu)化和代碼生成層,用于優(yōu)化張量運算符。

          ??上圖展示了TVM工具的整體框圖。整個工具具有如下的優(yōu)勢:

          1. 其輸入時任意一個深度學(xué)習(xí)框架輸出的模型,即該工具不挑模型,全部通吃?。?!?其輸出是針對現(xiàn)實場景中的各種硬件,具體包括Intel的CPU/GPU、NVIDIA的GPU、ARM的CPU\GPU、樹莓派、FPGA、ASCI等,即該工具也不挑部署設(shè)備,基本上全部通吃。

          2. TVM中包含了多級模型優(yōu)化機制,具體包括高級的IR優(yōu)化和低級的圖優(yōu)化。除此之外,還有一個強大的工具就autotvm,這個工具可以通過一些ML算法尋找到針對不同硬件最優(yōu)的一種卷積層實現(xiàn)方式,從而實現(xiàn)進一步的壓縮和加速。

          3. TVM不想TensorRT那么局限,它幾乎可以很好的支持市面上所有的硬件設(shè)備,這是它的一個強大之處。主要通過LLCM來支持Intel和ARM CPU等一些設(shè)備;通過Opencl來支持ARM的MailGPU;通過CUDA來支持NVIDIA的設(shè)備;通過Metal來支持蘋果的設(shè)備;通過VTA來很好的支持FPGA和ASCI(即自己設(shè)計的芯片)。

          4. TVM的眾多優(yōu)勢之一在于它對多種平臺和語言的豐富支持。我們提供了框架的兩個組件:包含完整優(yōu)化庫以生成優(yōu)化機器代碼的編譯器堆棧和輕量級的運行時,它提供了在不同平臺上部署編譯模塊所需的可移植性。**TVM目前支持Python和C++接口到嵌入式編譯器堆棧。**我們設(shè)計了具有最大重用的框架,以便編譯器堆棧的改進可以在Python和C++組件之間互換應(yīng)用。我們還提供了一個輕量級運行時,它可以直接運行在諸如JavaScript、Java、Python和C++等平臺上的TVM編譯代碼,這些平臺包括Android、IOS、樹莓PI和Web瀏覽器。

          TVM裝載ONNX模型并執(zhí)行模型優(yōu)化的簡單案例

          import onnx
          import numpy as np
          import tvm
          import tvm.relay as relay
          from tvm.contrib.download import download_testdata

          ######################################################################
          # Load pretrained ONNX model
          # ---------------------------------------------
          # The example super resolution model used here is exactly the same model in onnx tutorial
          # http://pytorch.org/tutorials/advanced/super_resolution_with_caffe2.html
          # we skip the pytorch model construction part, and download the saved onnx model
          model_url = ''.join(['https://gist.github.com/zhreshold/',
          'bcda4716699ac97ea44f791c24310193/raw/',
          '93672b029103648953c4e5ad3ac3aadf346a4cdc/',
          'super_resolution_0.2.onnx'])
          model_path = download_testdata(model_url, 'super_resolution.onnx', module='onnx')
          # now you have super_resolution.onnx on disk
          onnx_model = onnx.load(model_path)

          ######################################################################
          # Load a test image
          # ---------------------------------------------
          # A single cat dominates the examples!
          from PIL import Image
          img_url = 'https://github.com/dmlc/mxnet.js/blob/master/data/cat.png?raw=true'
          img_path = download_testdata(img_url, 'cat.png', module='data')
          img = Image.open(img_path).resize((224, 224))
          img_ycbcr = img.convert("YCbCr") # convert to YCbCr
          img_y, img_cb, img_cr = img_ycbcr.split()
          x = np.array(img_y)[np.newaxis, np.newaxis, :, :]

          ######################################################################
          # Compile the model with relay
          # ---------------------------------------------
          target = 'llvm'

          input_name = '1'
          shape_dict = {input_name: x.shape}
          mod, params = relay.frontend.from_onnx(onnx_model, shape_dict)

          with relay.build_config(opt_level=1):
          intrp = relay.build_module.create_executor('graph', mod, tvm.cpu(0), target)

          ######################################################################
          # Execute on TVM
          # ---------------------------------------------
          dtype = 'float32'
          tvm_output = intrp.evaluate()(tvm.nd.array(x.astype(dtype)), **params).asnumpy()

          ######################################################################
          # Display results
          # ---------------------------------------------
          # We put input and output image neck to neck
          from matplotlib import pyplot as plt
          out_y = Image.fromarray(np.uint8((tvm_output[0, 0]).clip(0, 255)), mode='L')
          out_cb = img_cb.resize(out_y.size, Image.BICUBIC)
          out_cr = img_cr.resize(out_y.size, Image.BICUBIC)
          result = Image.merge('YCbCr', [out_y, out_cb, out_cr]).convert('RGB')
          canvas = np.full((672, 672*2, 3), 255)
          canvas[0:224, 0:224, :] = np.asarray(img)
          canvas[:, 672:, :] = np.asarray(result)
          plt.imshow(canvas.astype(np.uint8))
          plt.show()
          • 1

          • 2

          • 3

          • 4

          • 5

          • 6

          • 7

          • 8

          • 9

          • 10

          • 11

          • 12

          • 13

          • 14

          • 15

          • 16

          • 17

          • 18

          • 19

          • 20

          • 21

          • 22

          • 23

          • 24

          • 25

          • 26

          • 27

          • 28

          • 29

          • 30

          • 31

          • 32

          • 33

          • 34

          • 35

          • 36

          • 37

          • 38

          • 39

          • 40

          • 41

          • 42

          • 43

          • 44

          • 45

          • 46

          • 47

          • 48

          • 49

          • 50

          • 51

          • 52

          • 53

          • 54

          • 55

          • 56

          • 57

          • 58

          • 59

          • 60

          • 61

          • 62

          • 63

          • 64

          5、tflite

          官網(wǎng)鏈接
          ??TensorFlow Lite 是一種用于設(shè)備端推斷的開源深度學(xué)習(xí)框架,該工具專注于模型優(yōu)化和模型部署,使得tensorflow的整個生態(tài)更加完善,首先使用tensorflow訓(xùn)練好的模型,然后通過tflite進行模型加速,最終將其部署在android或者ios設(shè)備上。

          ??上圖展示了tflite的整個流程。首先需要選擇一個合適的模型;然后使用Lite converter將模型轉(zhuǎn)換為FlatBuffer格式;接著將.tflite文件部署到嵌入式設(shè)備中;最后進行模型量化操作。

          6、ncnn

          添加鏈接描述
          ??ncnn 是一個為手機端極致優(yōu)化的高性能神經(jīng)網(wǎng)絡(luò)前向計算框架。ncnn 從設(shè)計之初深刻考慮手機端的部署和使用。無第三方依賴,跨平臺,手機端 cpu 的速度快于目前所有已知的開源框架?;?ncnn,開發(fā)者能夠?qū)⑸疃葘W(xué)習(xí)算法輕松移植到手機端高效執(zhí)行,開發(fā)出人工智能 APP,將 AI 帶到你的指尖。ncnn 目前已在騰訊多款應(yīng)用中使用,如 QQ,Qzone,微信,天天P圖等。


          7、MNN

          官網(wǎng)鏈接
          ??MNN是一個輕量級的深度神經(jīng)網(wǎng)絡(luò)推理引擎,在端側(cè)加載深度神經(jīng)網(wǎng)絡(luò)模型進行推理預(yù)測。目前,MNN已經(jīng)在阿里巴巴的手機淘寶、手機天貓、優(yōu)酷等20多個App中使用,覆蓋直播、短視頻、搜索推薦、商品圖像搜索、互動營銷、權(quán)益發(fā)放、安全風(fēng)控等場景。此外,IoT等場景下也有若干應(yīng)用。
          主要特點如下所示:


          整體設(shè)計架構(gòu)如下所示:

          ??上圖展示了MNN的整體設(shè)計架構(gòu)。其支持的深度學(xué)習(xí)框架包括Tensorflow、Caffe、ONNX;Frontends包括Tensorflow、Caffe、ONNX;包含的圖優(yōu)化操作包括:融合操作、替換操作和調(diào)節(jié)操作;引擎包括圖調(diào)度和CV處理;Backends包括CPU、Metal、OpenCL、Vulkan;底層的優(yōu)化技術(shù)包括:Neon或者ASM、多線程、內(nèi)存重復(fù)使用、異構(gòu)計算等。

          8、OpenVIO

          官網(wǎng)鏈接
          ??openVIO是Intel官方針對Intel cpu推出的一款加速工具。該工具專注于邊緣端的推理;用戶可以使用該工具對Intel的CPU/GPU/FPGA等產(chǎn)品進行加速;可以直接調(diào)用優(yōu)化好的Opencv和OpenVX包。

          ??如上圖所示,openVIO不僅可以用來執(zhí)行基于深度學(xué)習(xí)的一些CV任務(wù),而且可以用來執(zhí)行一些傳統(tǒng)的CV任務(wù)。除此之外,它還可以對特定的硬件進行加速。通過openVIO,你可以讓你的算法在CPU端實現(xiàn)4~5倍的加速,它讓你的算法運行在CPU端成為了可能,在很多應(yīng)用場景下面會具有更高的性價比。

          9、Tengine

          官網(wǎng)鏈接
          ??Tengine是由開放式人工智能實驗室開發(fā)的一個面向嵌入式設(shè)備的精簡、高性能、模塊化的推理引擎。Tengine引擎由六個模塊組成core/operator/serializer/executor/driver/wrapper。

          • core提供了系統(tǒng)的基本組件和功能;

          • operator定義了運算符的模式,如卷積、relu、池化等操作;

          • serializer用來加載保存的模型。該框架是可擴展的,可以支持不同的輸入格式,包括自定義格式。caffe/onnx/tensorflow/mxnet和tengine模型可以由tengine直接加載;

          • executor實現(xiàn)了運行g(shù)raph和operators的代碼。當(dāng)前版本為多個A72核提供了高度優(yōu)化的實現(xiàn);

          • driver是真實h/w的適配器,通過hal-api為設(shè)備執(zhí)行器提供服務(wù)。單個驅(qū)動程序可以創(chuàng)建多個設(shè)備;

          • wrapper為不同的框架提供了api包裝。caffe api包裝器和tensorflow api包裝器現(xiàn)在都可以正常使用啦。

          10、ARMNN

          官網(wǎng)鏈接
          ??ArmNN是Arm機構(gòu)開源的基于arm嵌入式設(shè)備的inference框架,在Arm Cortex-A CPUs、Arm Mali GPUs、Arm Machine Learning processor都可以達到很高的加速效果。不過可惜的是,由于缺乏文檔及教程,該框架在國內(nèi)推廣的程度不高,目前Github上star僅有359個。相對于其他競品inference框架如NCNN、Tengine、Mace、MNN等等,ArmNN的知名度顯得很小。不過筆者在項目的多次使用中,發(fā)現(xiàn)ArmNN是一個被低估的框架(在arm設(shè)備上的性能幾乎都優(yōu)于目前的前傳框架),不虧是ARM家精心調(diào)教的SDK,對自家核心的性能調(diào)教到了極致。
          ??ArmNN基于Arm的另外一個開源計算引擎ComputeLibrary做后端的核心計算,前端支持多種離線訓(xùn)練框架,如TensorFlow、TFLITE、CAFFE以及ONNX。從功能上來說,幾乎實現(xiàn)了與市面上所有離線訓(xùn)練框架無縫對接。而且ArmNN在FP32、FP16及INT8上的加速非??捎^,筆者在RK3399上做300x300的Mobilenet-SSD(depth_multiplier=1.0),效率可達90ms/ 幀,其余的框架大多在160ms左右徘徊。

          11、Paddle Lite

          官網(wǎng)鏈接
          ??Plader Lite是Plader Mobile的更新版本,這是一個開源的深度學(xué)習(xí)框架,旨在使在移動、嵌入式和物聯(lián)網(wǎng)設(shè)備上執(zhí)行推理變得容易。它與飛槳和其他來源的預(yù)訓(xùn)練模型兼容。

          • 輕量化。在移動設(shè)備上,由于我們的執(zhí)行模塊和分析模塊是分離的,因此可以在沒有第三方庫的情況下部署執(zhí)行模塊。在arm v7上,只占用800kb,而在arm v8上,1.3mb占用了由paddle-lite提供的動態(tài)庫中的80個操作符和85個內(nèi)核。無需額外優(yōu)化,槳葉式Lite即可實現(xiàn)即時推理。

          • 高性能。Paddle lite支持設(shè)備優(yōu)化內(nèi)核,最大限度地提高arm cpu性能。它還支持使用槳葉模型壓縮工具進行int8量化,從而減小模型的大小并提高模型的性能。在華為的npu和fpga上,性能也得到了提升。

          • 高兼容性。硬件兼容性:Paddle Lite支持多種硬件——ARM CPU、Mali GPU、Adreno GPU、Huawei NPU和FPGA。在不久的將來,我們還將支持來自Cambricon和Bitmain的人工智能微芯片。模型兼容性:Paddle Lite與PaddlePaddle完全兼容。驗證了18個模型(主要是cv模型和ocr模型)和85個算子的準(zhǔn)確性和性能。今后,我們還將支持其他機型。框架兼容性:除了在PaddlePaddle上訓(xùn)練的模型之外,那些在Caffe和Tensorflow訓(xùn)練的模型也可以通過X2Palle轉(zhuǎn)換成Paddle Lite。在未來,我們還將支持onnx格式的模型。

          12、FeatherCNN

          官網(wǎng)鏈接
          ??FeatherCNN是騰訊人工智能平臺部開發(fā)的一個高性能輕量級cnn推理庫。功能cnn源于我們的《榮耀之王》游戲ai項目,我們的目標(biāo)是為moba游戲ai建立一個神經(jīng)模型并在移動設(shè)備上運行。FeatherCNN目前的目標(biāo)是ARM CPU。我們將在不久的將來把它擴展到其它的架構(gòu)上面。與其他庫相比,feathercnn具有以下特點:

          • 高性能。FeatherCNN在多種設(shè)備上提供最先進的推理計算性能,包括移動電話(iOS/Android)、嵌入式設(shè)備(Linux)以及基于ARM的服務(wù)器(Linux)。

          • 輕松部署。FeatherCNN將所有內(nèi)容打包在一個代碼庫中,以擺脫第三方依賴。因此,它有助于在移動平臺上部署。

          • 輕量級。編譯的eatherCNN庫是很小,只有數(shù)百kbs。

          13、DNNL

          官網(wǎng)鏈接
          ??深度神經(jīng)網(wǎng)絡(luò)庫(dnnl)是一個用于深度學(xué)習(xí)應(yīng)用的開源性能庫。該庫包括針對英特爾體系結(jié)構(gòu)處理器和英特爾處理器圖形優(yōu)化的神經(jīng)網(wǎng)絡(luò)的基本構(gòu)建塊。dnnl是為有興趣在intel cpu和gpu上提高應(yīng)用程序性能的深度學(xué)習(xí)應(yīng)用程序和框架開發(fā)人員而設(shè)計的。

          14、MACE

          官網(wǎng)鏈接-Model_Zoo-官方文檔
          ??Mobile AI Compute Engine (MACE) 是一個專為移動端異構(gòu)計算平臺(支持Android, iOS, Linux, Windows)優(yōu)化的神經(jīng)網(wǎng)絡(luò)計算框架。主要從以下的角度做了專門的優(yōu)化:

          • 性能-代碼經(jīng)過NEON指令,OpenCL以及Hexagon HVX專門優(yōu)化,并且采用 Winograd算法來進行卷積操作的加速。此外,還對啟動速度進行了專門的優(yōu)化。

          • 功耗-支持芯片的功耗管理,例如ARM的big.LITTLE調(diào)度,以及高通Adreno GPU功耗選項。

          • 系統(tǒng)響應(yīng)-支持自動拆解長時間的OpenCL計算任務(wù),來保證UI渲染任務(wù)能夠做到較好的搶占調(diào)度, 從而保證系統(tǒng)UI的相應(yīng)和用戶體驗。

          • 內(nèi)存占用-通過運用內(nèi)存依賴分析技術(shù),以及內(nèi)存復(fù)用,減少內(nèi)存的占用。另外,保持盡量少的外部 依賴,保證代碼尺寸精簡。

          • 模型加密與保護-模型保護是重要設(shè)計目標(biāo)之一。支持將模型轉(zhuǎn)換成C++代碼,以及關(guān)鍵常量字符混淆,增加逆向的難度。

          • 硬件支持范圍-支持高通,聯(lián)發(fā)科,以及松果等系列芯片的CPU,GPU與DSP(目前僅支持Hexagon)計算加速。CPU模式支持Android, iOS, Linux等系統(tǒng)。

          • 模型格式支持-支持TensorFlow, Caffe和ONNX等模型格式。

          15、SNPE

          官網(wǎng)鏈接
          ??SNPE是高通的一個神經(jīng)網(wǎng)絡(luò)框架,該平臺具有廣泛的異構(gòu)計算功能,這些功能經(jīng)過精心設(shè)計,可以在設(shè)備上運行經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò),而無需連接到云。Qualcomm?人工智能(AI)神經(jīng)處理SDK旨在幫助開發(fā)人員在Snapdragon移動平臺(無論是CPU,GPU還是DSP)上運行經(jīng)過Caffe / Caffe2,ONNX或TensorFlow訓(xùn)練的一個或多個神經(jīng)網(wǎng)絡(luò)模型。
          ??Qualcomm神經(jīng)處理SDK旨在幫助開發(fā)人員節(jié)省時間和精力,以優(yōu)化帶有Snapdragon的設(shè)備上經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)的性能。它通過提供用于模型轉(zhuǎn)換和執(zhí)行的工具以及用于通過功能和性能配置文件來針對核心的API以匹配所需的用戶體驗來實現(xiàn)此目的。高通神經(jīng)處理SDK支持卷積神經(jīng)網(wǎng)絡(luò)和自定義層。
          ??Qualcomm神經(jīng)處理SDK完成了在Snapdragon移動平臺上運行神經(jīng)網(wǎng)絡(luò)所需的許多繁重工作,這可以幫助開發(fā)人員提供更多時間和資源來專注于構(gòu)建新的創(chuàng)新用戶體驗。
          ??為了使AI開發(fā)人員的生活更輕松,Qualcomm神經(jīng)處理軟件開發(fā)工具包沒有定義另一個網(wǎng)絡(luò)層庫。取而代之的是,它使開發(fā)人員可以使用熟悉的框架自由設(shè)計和訓(xùn)練網(wǎng)絡(luò),并在發(fā)布時支持Caffe / Caffe2,ONNX和TensorFlow。開發(fā)工作流程如下:

          16、model-compression

          Github鏈接
          ??model-compression是一個基于Pytorch的模型壓縮工具。該工具具有如下的特點:

          • 量化:任意位數(shù)(16/8/4/2?bits)、三值/二值

          • 剪枝:正常、規(guī)整、針對分組卷積結(jié)構(gòu)的剪枝

          • 分組卷積結(jié)構(gòu)

          • 針對特征(A)二值的BN融合

          該項目當(dāng)前支持的的功能如下所示

          • 普通卷積和分組卷積結(jié)構(gòu)

          • 權(quán)重W和特征A的訓(xùn)練中量化, W(FP32/16/8/4/2bits, 三/二值) 和 A(FP32/16/8/4/2bits, 二值)任意組合

          • 針對三/二值的一些tricks:W二值/三值縮放因子,W/grad(ste、saturate_ste、soft_ste)截斷,W三值_gap(防止參數(shù)更新抖動),W/A二值時BN_momentum(<0.9),A二值時采用B-A-C-P可比C-B-A-P獲得更高acc

          • 多種剪枝方式:正常剪枝、規(guī)整剪枝(比如model可剪枝為每層剩余filter個數(shù)為N(8,16等)的倍數(shù))、針對分組卷積結(jié)構(gòu)的通道剪枝(剪枝后仍保證分組卷積結(jié)構(gòu))

          • batch normalization融合及融合前后model對比測試:普通融合(BN層參數(shù) —> conv的權(quán)重w和偏置b)、針對特征(A)二值的融合(BN層參數(shù) —> conv的偏置b)

          17、MediaPipe

          Github鏈接
          ??MediaPipe是一個用于構(gòu)建多模式(如視頻、音頻、任何時間序列數(shù)據(jù))、跨平臺(即Android、iOS、web、邊緣設(shè)備)應(yīng)用ML管道的框架。使用MediaPipe,感知管道可以構(gòu)建為模塊化組件的圖形,例如,包括推理模型(例如,TensorFlow、TFLite)和媒體處理功能。

          18、Glow

          Github鏈接
          ??Glow是一個用于硬件加速器的機器學(xué)習(xí)編譯器和執(zhí)行引擎。它被設(shè)計成用作高級機器學(xué)習(xí)框架的后端。編譯器的設(shè)計允許最先進的編譯器優(yōu)化和神經(jīng)網(wǎng)絡(luò)圖的代碼生成。它是一個類似于TVM的深度學(xué)習(xí)編譯器。
          ??Glow將傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)流圖降為兩相強類型中間表示(IR)。高級IR允許優(yōu)化器執(zhí)行特定于域的優(yōu)化。較低級別的基于指令的僅地址IR允許編譯器執(zhí)行與內(nèi)存相關(guān)的優(yōu)化,例如指令調(diào)度、靜態(tài)內(nèi)存分配和副本消除。在最低級別,優(yōu)化器執(zhí)行特定于機器的代碼生成,以利用專門的硬件功能。Glow具有一個降低階段,通過消除在所有目標(biāo)上實現(xiàn)所有運算符的需要,編譯器可以支持大量輸入運算符以及大量硬件目標(biāo)。降低階段旨在減少輸入空間,并允許新的硬件后端集中于少量線性代數(shù)原語

          19、TNN

          Github鏈接
          ??TNN是由騰訊優(yōu)圖實驗室打造,移動端高性能、輕量級推理框架,同時擁有跨平臺、高性能、模型壓縮、代碼裁剪等眾多突出優(yōu)勢。TNN框架在原有Rapidnet、ncnn框架的基礎(chǔ)上進一步加強了移動端設(shè)備的支持以及性能優(yōu)化,同時也借鑒了業(yè)界主流開源框架高性能和良好拓展性的優(yōu)點。
          1、計算優(yōu)化
          ??針對不同架構(gòu)在硬件指令發(fā)射、吞吐、延遲、緩存帶寬、緩存延遲、寄存器數(shù)量等特點,深度優(yōu)化底層算子,極致利用硬件算力;主流硬件平臺(CPU: ARMv7, ARMv8, GPU: Mali, Adreno, Apple) 深度調(diào)優(yōu);CNN 核心卷積運算通過 Winograd,Tile-GEMM, Direct Conv 等多種算法實現(xiàn),保證不同參數(shù)、計算尺度下高效計算;Op 融合:離線分析網(wǎng)絡(luò)計算圖,多個小 Op(計算量小、功能較簡單)融合運算,減少反復(fù)內(nèi)存讀取、kernel 啟動等開銷。
          2、低精度優(yōu)化
          ??支持 INT8, FP16 低精度計算,減少模型大小、內(nèi)存消耗,同時利用硬件低精度計算指令加速計算;支持 INT8 Winograd 算法,(輸入6bit), 在精度滿足要求的情況下,進一步降低模型計算復(fù)雜度;支持單模型多種精度混合計算,加速計算同時保證模型精度。
          3、內(nèi)存優(yōu)化
          高效”內(nèi)存池”實現(xiàn):通過 DAG 網(wǎng)絡(luò)計算圖分析,實現(xiàn)無計算依賴的節(jié)點間復(fù)用內(nèi)存,降低 90% 內(nèi)存資源消耗;跨模型內(nèi)存復(fù)用:支持外部實時指定用于網(wǎng)絡(luò)內(nèi)存,實現(xiàn)“多個模型,單份內(nèi)存”。

          20、Tengine Lite

          Github鏈接
          ??Tengine Lite 由 OPEN AI LAB 主導(dǎo)開發(fā),該項目實現(xiàn)了深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型在嵌入式設(shè)備上快速、高效部署。為實現(xiàn)眾多 AIoT 應(yīng)用中跨平臺部署,本項目基于原有 Tengine 項目使用 C 語言進行重構(gòu),針對嵌入式設(shè)備資源有限的特點進行深度框架裁剪。同時采用完全分離的前后端設(shè)計,利于 CPU、GPU、NPU 等異構(gòu)計算單元快速移植和部署。同時兼容 Tengine 框架原有 API 和 模型格式 tmfile,降低評估、遷移成本。
          ??Tengine Lite 核心代碼由 4 個模塊組成:

          • dev:NN Operators 后端模塊,當(dāng)前提供 CPU 代碼,后續(xù)逐步開源 GPU、NPU 參考代碼;

          • lib:框架核心部件,包括 NNIR、計算圖、硬件資源、模型解析器的調(diào)度和執(zhí)行模塊;

          • op:NN Operators 前端模塊,實現(xiàn) NN Operators 注冊、初始化;

          • serializer:模型解析器,實現(xiàn) tmfile 格式的網(wǎng)絡(luò)模型參數(shù)解析。

          21、rknn與rknpu

          Github鏈接
          ??rknn是瑞芯微官方針對PC、RK3390Pro、 RK1806、RK1808、RV1109、RV1126提出的一套模型轉(zhuǎn)換、模型推理與模型評估工具。這套工具支持將大多數(shù)框架訓(xùn)練生成的模型轉(zhuǎn)換成瑞芯微官方支持的.rknn格式的int量化模型,具體包括:Caffe、DarkNet、Keras、Mxnet、Pytorch、Tensorflow、TFlite和ONNX格式。整個工具具有完整的文檔與簡單易用的教程,很適合新手入手。除此之外,該工具量化之后的int8模型的推理速度已經(jīng)可以與Hisi設(shè)備進行媲美,建議大家自己去體驗一下。
          ??該工具主要支持以下的功能,具體包括:

          • 模型轉(zhuǎn)換:支持 Caffe、TensorFlow、TensorFlow Lite、ONNX、Darknet、Pytorch、MXNet 和Keras 模型轉(zhuǎn)成 RKNN模型,支持RKNN模型導(dǎo)入導(dǎo)出,后續(xù)能夠在Rockchip NPU平臺上加載使用

          • 量化功能:支持將浮點模型轉(zhuǎn)成量化模型,目前支持的量化方法有非對稱量化 (asymmetric_quantized-u8),動態(tài)定點量化(dynamic_fixed_point-8 和 dynamic_fixed_point-16)。

          • 模型推理:能夠在 PC上模擬Rockchip NPU 運行RKNN模型并獲取推理結(jié)果;也可以將 RKNN模型分發(fā)到指定的NPU設(shè)備上進行推理。

          • 性能評估:能夠在 PC上模擬Rockchip NPU 運行RKNN模型,并評估模型性能(包括總 耗時和每一層的耗時);也可以將RKNN模型分發(fā)到指定NPU 設(shè)備上運行,以評估模型在實際設(shè)備上運行時的性能。

          • 內(nèi)存評估:評估模型運行時對系統(tǒng)和NPU內(nèi)存的消耗情況。使用該功能時,必須將RKNN 模型分發(fā)到NPU 設(shè)備中運行,并調(diào)用相關(guān)接口獲取內(nèi)存使用信息。

          • 模型預(yù)編譯:通過預(yù)編譯技術(shù)生成的 RKNN 模型可以減少在硬件平臺上的加載時間。對 于部分模型,還可以減少模型尺寸。但是預(yù)編譯后的RKNN模型只能在NPU設(shè)備上運行。

          • 模型分段:該功能用于多模型同時運行的場景下,可以將單個模型分成多段在 NPU 上執(zhí) 行,借此來調(diào)節(jié)多個模型占用 NPU 的執(zhí)行時間,避免因為一個模型占用太多執(zhí)行時間,而使其他模型得不到及時執(zhí)行。

          • 自定義算子功能:如果模型含有RKNN-Toolkit 不支持的算子(operator),那么在模型轉(zhuǎn) 換階段就會失敗。

          • 量化精度分析功能:該功能將給出模型量化前后每一層推理結(jié)果的歐氏距離或余弦距離, 以分析量化誤差是如何出現(xiàn)的,為提高量化模型的精度提供思路。

          • 可視化功能:該功能以圖形界面的形式呈現(xiàn)RKNN-Toolkit 的各項功能,簡化用戶操作步驟。

          • 模型優(yōu)化等級功能:RKNN-Toolkit 在模型轉(zhuǎn)換過程中會對模型進行優(yōu)化,默認(rèn)的優(yōu)化選 項可能會對模型精度產(chǎn)生一些影響。

          • 模型加密功能:RKNN-Toolkit 從 1.6.0 版本開始支持模型加密功能。

          四、其它加速工具

          1、Halide

          官網(wǎng)鏈接
          ??Halide是一種編程語言,旨在使在現(xiàn)代機器上編寫高性能圖像處理代碼變得更容易。Halide當(dāng)前支持的目標(biāo)包括:

          • CPU架構(gòu):x86、ARM、MIPS、Hexagon、PowerPC

          • 操作系統(tǒng):Linux、Windows、Mac OS X、Android、iOS、高通Qurt

          • gpu計算api:cuda、opencl、opengl、opengl計算著色器、apple metal、microsoft direct x 12

          • Halide并不是一種獨立的編程語言,Halide是嵌入在C++中。這意味著你可以編寫C++代碼,使用Halide的C++ API構(gòu)建Halide管道的內(nèi)存表示;然后可以將這個表示編譯為一個對象文件,或者通過jit編譯它并在同一進程中運行它。

          2、TACO

          官網(wǎng)鏈接
          ??TACO是一個C++文庫,它在稀疏和稠密張量上計算張量代數(shù)表達式。在稀疏張量代數(shù)和稀疏線性代數(shù)的廣泛應(yīng)用庫中,它使用新的編譯器技術(shù)來獲得與手工優(yōu)化的內(nèi)核相競爭的性能。您可以使用TACO作為C++庫,讓您加載張量、從文件讀取張量,并計算張量表達式。也可以使用TACO作為代碼生成器,生成計算張量表達式的c函數(shù)。

          3、weld

          官網(wǎng)鏈接
          ??Weld是一種用于提高數(shù)據(jù)密集型應(yīng)用程序性能的語言和運行時。它通過使用公共中間表示來表示庫中的核心計算,并跨每個框架進行優(yōu)化,從而跨庫和函數(shù)進行優(yōu)化?,F(xiàn)代分析應(yīng)用程序結(jié)合來自不同庫和框架的多個功能來構(gòu)建復(fù)雜的工作流。盡管單個功能可以單獨實現(xiàn)高性能,但由于功能之間的大量數(shù)據(jù)移動,組合工作流的性能通常比硬件限制低一個數(shù)量級。Weld解決這個問題的任務(wù)是為整個工作流懶洋洋地建立一個計算,然后僅在需要結(jié)果時才對其進行優(yōu)化和評估。

          4、ATLAS

          官網(wǎng)鏈接
          ??ATLAS是一個android客戶端容器化框架。我們稱之為android動態(tài)組件框架。atlas的特性如下所示:
          -ATLAS提供了分離、組件和動態(tài)支持。Atlas涵蓋了項目編碼期、APK運行期和后續(xù)運行維護中的各種問題

          • 在項目期間,ATLAS使工程師能夠獨立開發(fā)、獨立調(diào)試,因為他們的項目是物理隔離的。

          • 在apk運行時,ATLAS具有完整的組件生命周期、類隔離等機制。

          • 在運行和維護期間,Atlas提供快速增量更新和快速升級能力。

          • ATLAS把工作盡可能的投入到項目期間,保證運行簡單穩(wěn)定,維護方便。

          5、TensorComprehensions

          官網(wǎng)鏈接
          ??TensorComprehensions(TC)是一個全功能的C++庫,利用Halide、ISL和NVRTC或LLVM自動合成高性能的機器學(xué)習(xí)內(nèi)核。TC還提供了與caffe2和pytorch的基本集成。具體的細節(jié)請看論文。這個庫的設(shè)計是高度可移植的,機器學(xué)習(xí)框架不可知的,只需要一個簡單的張量庫,具有內(nèi)存分配、卸載和同步功能。

          6、opentuner

          官網(wǎng)鏈接
          ??程序自動微調(diào)已在許多領(lǐng)域得到證明,以實現(xiàn)更好或更便攜的性能。然而,autotuner本身在項目之間通常不是很容易移植的,因為使用域通知的搜索空間表示對于獲得好的結(jié)果是至關(guān)重要的,并且因為沒有一種單一的搜索技術(shù)對所有問題都表現(xiàn)得最好。
          ??opentuner是一種新的領(lǐng)域?qū)S枚嗄繕?biāo)程序自動調(diào)諧框架。opentuner支持完全可定制的配置表示、允許特定于域的技術(shù)的可擴展技術(shù)表示,以及用于與優(yōu)化程序通信的易于使用的接口。opentuner中的一個關(guān)鍵功能是同時使用各種不同的搜索技術(shù),性能良好的技術(shù)將獲得更大的測試預(yù)算,性能較差的技術(shù)將被禁用。

          原文地址?https://blog.csdn.net/wzz18191171661/article/details/99700992




          閱讀過本文的人還看了以下文章:


          TensorFlow 2.0深度學(xué)習(xí)案例實戰(zhàn)


          基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測


          《基于深度學(xué)習(xí)的自然語言處理》中/英PDF


          Deep Learning 中文版初版-周志華團隊


          【全套視頻課】最全的目標(biāo)檢測算法系列講解,通俗易懂!


          《美團機器學(xué)習(xí)實踐》_美團算法團隊.pdf


          《深度學(xué)習(xí)入門:基于Python的理論與實現(xiàn)》高清中文PDF+源碼


          特征提取與圖像處理(第二版).pdf


          python就業(yè)班學(xué)習(xí)視頻,從入門到實戰(zhàn)項目


          2019最新《PyTorch自然語言處理》英、中文版PDF+源碼


          《21個項目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實踐詳解》完整版PDF+附書代碼


          《深度學(xué)習(xí)之pytorch》pdf+附書源碼


          PyTorch深度學(xué)習(xí)快速實戰(zhàn)入門《pytorch-handbook》


          【下載】豆瓣評分8.1,《機器學(xué)習(xí)實戰(zhàn):基于Scikit-Learn和TensorFlow》


          《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼


          汽車行業(yè)完整知識圖譜項目實戰(zhàn)視頻(全23課)


          李沐大神開源《動手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材


          筆記、代碼清晰易懂!李航《統(tǒng)計學(xué)習(xí)方法》最新資源全套!


          《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼


          將機器學(xué)習(xí)模型部署為REST API


          FashionAI服裝屬性標(biāo)簽圖像識別Top1-5方案分享


          重要開源!CNN-RNN-CTC 實現(xiàn)手寫漢字識別


          yolo3 檢測出圖像中的不規(guī)則漢字


          同樣是機器學(xué)習(xí)算法工程師,你的面試為什么過不了?


          前海征信大數(shù)據(jù)算法:風(fēng)險概率預(yù)測


          【Keras】完整實現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個項目,讓你掌握深度學(xué)習(xí)圖像分類


          VGG16遷移學(xué)習(xí),實現(xiàn)醫(yī)學(xué)圖像識別分類工程項目


          特征工程(一)


          特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊


          特征工程(三):特征縮放,從詞袋到 TF-IDF


          特征工程(四): 類別特征


          特征工程(五): PCA 降維


          特征工程(六): 非線性特征提取和模型堆疊


          特征工程(七):圖像特征提取和深度學(xué)習(xí)


          如何利用全新的決策樹集成級聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?


          Machine Learning Yearning 中文翻譯稿


          螞蟻金服2018秋招-算法工程師(共四面)通過


          全球AI挑戰(zhàn)-場景分類的比賽源碼(多模型融合)


          斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


          python+flask搭建CNN在線識別手寫中文網(wǎng)站


          中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學(xué)習(xí)與特征工程



          不斷更新資源

          深度學(xué)習(xí)、機器學(xué)習(xí)、數(shù)據(jù)分析、python

          ?搜索公眾號添加:?datayx??



          機大數(shù)據(jù)技術(shù)與機器學(xué)習(xí)工程

          ?搜索公眾號添加:?datanlp

          長按圖片,識別二維碼



          瀏覽 193
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲色五月 | 开心黄色网 | 精品无码一区二区三区爱奴 | 人人婷人人操 | 天堂网资源av |