1. 程式人生 > >深度學習部署-tensorflow 部署方法

深度學習部署-tensorflow 部署方法

TensorFlow 是目前最為流行的機器學習框架之一,通過它我們可以便捷地構建機器學習模型。使用 TensorFlow 模型對外提供服務有若干種方式,本文將介紹如何使用 SavedModel 機制來編寫模型預測介面。

TensorFlow 模型如何對外提供服務

鳶尾花深層神經網路分類器

首先讓我們使用 TensorFlow 的深層神經網路模型來構建一個鳶尾花的分類器。完整的教程可以在 TensorFlow 的官方文件中檢視(Premade Estimators),我也提供了一份示例程式碼,託管在 GitHub 上( iris_dnn.py),讀者可以克隆到本地進行測試。以下是部分程式碼摘要:

  1. feature_columns =[tf.feature_column
    .numeric_column(key=key)
  2. for key in train_x.keys()]
  3. classifier = tf.estimator.DNNClassifier(
  4.    feature_columns=feature_columns,
  5.    hidden_units=[10, 10],
  6.    n_classes=3)
  7. classifier.train(
  8.    input_fn=lambda: train_input_fn(train_x, train_y, batch_size=BATCH_SIZE),
  9.    steps=STEPS)
  10. predictions = classifier.predict
    (
  11.    input_fn=lambda: eval_input_fn(predict_x, labels=None, batch_size=BATCH_SIZE))

將模型匯出為 SavedModel 格式

TensorFlow 提供了 SavedModel 機制,用以將訓練好的模型匯出為外部檔案,供後續使用或對外提供服務。 Estimator 類的 export_savedmodel 方法接收兩個引數:匯出目錄和資料接收函式。該函式定義了匯出的模型將會對何種格式的引數予以響應。通常,我們會使用 TensorFlow 的 Example 型別來表示樣本和特徵。例如,鳶尾花樣本可以用如下形式表示:

  1. Example
    (
  2.    features=Features(
  3.        feature={
  4. 'SepalLength': Feature(float_list=FloatList(value=[5.1])),
  5. 'SepalWidth': Feature(float_list=FloatList(value=[3.3])),
  6. 'PetalLength': Feature(float_list=FloatList(value=[1.7])),
  7. 'PetalWidth': Feature(float_list=FloatList(value=[0.5])),
  8. }
  9. )
  10. )

接收函式會收到序列化後的 Example 物件,將其轉化成一組 Tensor 供模型消費。TensorFlow 提供了一些工具函式幫助我們完成這些轉換。首先,我們將 feature_columns陣列轉化成 Feature 字典,作為反序列化的規格標準,再用它生成接收函式:

  1. # [
  2. #     _NumericColumn(key='SepalLength', shape=(1,), dtype=tf.float32),
  3. #     ...
  4. # ]
  5. feature_columns = [tf.feature_column.numeric_column(key=key)
  6. for key in train_x.keys()]
  7. # {
  8. #     'SepalLength': FixedLenFeature(shape=(1,), dtype=tf.float32),
  9. #     ...
  10. # }
  11. feature_spec = tf.feature_column.make_parse_example_spec(feature_columns)
  12. # 構建接收函式,並匯出模型。
  13. serving_input_receiver_fn =tf.estimator.export.build_parsing_serving_input_receiver_fn(feature_spec)
  14. export_dir = classifier.export_savedmodel('export', serving_input_receiver_fn)

使用命令列工具檢測 SavedModel

每次匯出模型都會生成一個帶有時間戳的目錄,裡面包含了該模型的引數資訊:

  1. export/1524907728/saved_model.pb
  2. export/1524907728/variables
  3. export/1524907728/variables/variables.data-00000-of-00001
  4. export/1524907728/variables/variables.index

TensorFlow 提供的命令列工具可用於檢視匯出模型的內容,甚至可以直接呼叫預測函式:

  1. $ saved_model_cli show --dir export/1524906774 \
  2. --tag_set serve --signature_def serving_default
  3. The given SavedModel SignatureDef contains the following input(s):
  4.  inputs['inputs'] tensor_info:
  5.      dtype: DT_STRING
  6.      shape: (-1)
  7. The given SavedModel SignatureDef contains the following output(s):
  8.  outputs['classes'] tensor_info:
  9.      dtype: DT_STRING
  10.      shape: (-1, 3)
  11.  outputs['scores'] tensor_info:
  12.      dtype:

    相關推薦

    深度學習部署-tensorflow 部署方法

    TensorFlow 是目前最為流行的機器學習框架之一,通過它我們可以便捷地構建機器學習模型。使用 TensorFlow 模型對外提供服務有若干種方式,本文將介紹如何使用 SavedModel 機制來編寫模型預測介面。鳶尾花深層神經網路分類器首先讓我們使用 TensorFlo

    深度學習模型的量化方法(論文學習 & tensorflow lite量化方法

    curl -L "https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen.pb.tar.gz" | tar -C tensorflow/examples/label_imag

    深度學習--解決梯度爆炸方法(含TensorFlow程式碼)

    在深層的神經網路中,經常碰到梯度消失或者梯度爆炸問題。我先講一下原理,在求導的時候因為是鏈式法則,哪怕所有層的導數都很接近1,比如0.9,那麼在20層之後0.9的20次方也只剩0.1左右。這就意味著越深層的誤差難以影響到淺層的權重。若是導數再小一點這個梯度就直接消失了接近0。

    深度學習最全優化方法總結比較及在tensorflow實現

    梯度下降演算法針對凸優化問題原則上是可以收斂到全域性最優的,因為此時只有唯一的區域性最優點。而實際上深度學習模型是一個複雜的非線性結構,一般屬於非凸問題,這意味著存在很多區域性最優點(鞍點),採用梯度下降演算法可能會陷入區域性最優,這應該是最頭疼的問題。這點和進化演算法如遺傳

    深度學習最全優化方法---來源於知乎

    ati 默認 tle 設置 約束 apt 接下來 nali ini 寫在前面:本寶寶好想只了解sgd,monument,adagrad,adam深度學習最全優化方法總結比較(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)

    深度學習TensorFlow)環境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3

    缺失 應該 否則 wid -c 方式 *** 也不能 collected   緊接著上一篇的文章《深度學習(TensorFlow)環境搭建:(二)Ubuntu16.04+1080Ti顯卡驅動》,這篇文章,主要講解如何安裝CUDA+CUDNN,不過前提是我們是已經把NVID

    深度學習tensorflow (一)

    spa 計算 put range mst reduce logs 分析 pen 一、TensorFlow簡介 1.TensorFlow定義: tensor :張量,N維數組 Flow : 流,基於數據流圖的計算 TensorFlow : 張量從圖像

    Vue深度學習(4)-方法與事件處理器

    () 一個 span 修飾 語句 特殊變量 方法 left stop 方法處理器 可以用 v-on 指令監聽 DOM 事件: <div id="app"> <button v-on:click = "greet">Greet<

    深度學習篇——Tensorflow配置(傻瓜安裝模式)

    error parse left 圖片 das adding list nac html5 前言 如果你是一個完美主義者,那麽請繞過此文,請參考《深度學習篇——Tensorflow配置(完美主義模式)》 安裝 pip install tensorflow ok,只要不報錯

    深度學習TensorFlow(四):卷積神經網絡

    padding valid 叠代 val 分析 此外 nbsp drop BE 基礎概念:   卷積神經網絡(CNN):屬於人工神經網絡的一種,它的權值共享的網絡結構顯著降低了模型的復雜度,減少了權值的數量。卷積神經網絡不像傳統的識別算法一樣,需要對數據進行特征提取和數據重

    快速上手深度學習 掌握TensorFlow模型構建與開發

    第5章 第6章 優勢 損失函數 學習過程 htm 項目 機器 過程 第1章 課程介紹介紹機器學習的背景,介紹tensorflow的背景,介紹課程python,numpy,virtualenv等前置學習內容,安裝tensorflow1-1 導學1-2 課程安排1-3 深度學習

    《白話深度學習TensorFlow》中文版PDF

    tps aid fff watermark href 復制 ESS 中文版 images 下載:https://pan.baidu.com/s/15dpKftB5VKqRvRyqWg94wA 《白話深度學習與TensorFlow》中文版PDF 經典學習資料,帶目錄和書簽,可

    深度學習框架Tensorflow學習與應用(5到8)

    五. 03-1 迴歸 # coding: utf-8 # In[2]: import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # In[3]: #使用numpy生成200個隨機點 x_

    深度學習Tensorflow函式詳解

      目錄 tf.truncated_normal tf.random_normal tf.nn.conv2d tf.nn.max_pool tf.reshape tf.nn.softmax tf.reduce_sum tf.reduce_max,tf.r

    深度學習Tensorflow——CNN 卷積神經網路 2

    轉自https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/5-05-CNN3/ 目錄 圖片處理  建立卷積層  建立全連線層  選優化方法  完整程式碼

    深度學習Tensorflow——CNN 卷積神經網路 1

    轉自https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/5-04-CNN2/ 這一次我們會說道 CNN 程式碼中怎麼定義 Convolutional 的層和怎樣進行 pooling. 基於上一次卷積神經網路的介

    分享《深度學習TensorFlow:入門、原理與進階實戰》PDF+源代碼

    image pro 源代碼 代碼 復制 進階 com nag 分享圖片 下載:https://pan.baidu.com/s/1zI-pblJ5dEwjGVe-QQP9hQ 更多資料:http://blog.51cto.com/3215120 《深度學習之TensorFlo

    深度學習情感分類常用方法(綜述)

    論文原文:Deep Learning for Sentiment Analysis: A Survey 原文地址:https://arxiv.org/ftp/arxiv/papers/1801/1801.07883.pdf (1)文件級情感分類: 主要方法如下圖所示: (2)語句級情感分類

    人工智慧熱門圖書(深度學習TensorFlow)免費送!

    歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 這個雙十一,人工智慧市場火爆,從智慧音箱到智慧分揀機器人,人工智慧已逐漸滲透到我們的生活的方方面面。網易雲社群聯合博文視點為大家帶來人工智慧熱門圖書專場,這些書籍將引領我們一起去解密人工智慧,瞭解這位即將走進我們生活的“朋友”。

    21 個專案玩轉深度學習——基於TensorFlow 的實踐詳解

    “對於我們這些想要了解深度學習的同學們來說,有時候會感覺到無從下手,刷了好幾遍的西瓜書還有一大堆資料還是感覺沒學到什麼,目前來說資料還是相對比較多的,這裡推薦一本適合新手入門的書籍。” 《21 個專案玩轉深度學習——基於TensorFlow 的實踐詳解》以實踐為導向,深入介紹了深度學習技術和