精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用更“時尚”的數據開啟機器學習的 Hello World 之門

Tensorflowers ? 來源:未知 ? 作者:李倩 ? 2018-06-13 11:08 ? 次閱讀

本期 AI Adventure 中,Yufeng 會帶領我們會按照之前分享的最佳實踐來試著完整走一遍機器學習的整個流程。工作量有點大,但是聰明的你應該沒問題。

使用 MNIST 數據* 來訓練模型常常被看作是機器學習界的「Hello World」例子(使用標準的 MNIST 數據訓練手寫字符的識別模型),今天我們跟著 Yufeng 一起,使用更“時尚”的數據開啟機器學習的 Hello World 之門。

* 段注:MNIST 是一個手寫數字圖像的數據集,每幅圖像都由一個整數標記。它主要用于機器學習算法的性能對標。

“潮”起來的 Machine Learning

Zalando(來自德國的電子商務公司)決意要讓 MNIST 再“火”一把,前段時間 Zalando 旗下的研究部門發布了叫做 Fashion-MNIST 的一個數據集。這是一個和 MNIST 具有相同格式的數據集,唯一的不同在于手寫字符被替換成了服飾、鞋子、挎包等等內容。它仍然有 10 個種類,圖像也仍然是 28x28 像素。

在 GitHub 查看更多對Fashion-MNIST數據集的介紹(中文):

https://github.com/zalandoresearch/fashion-mnist/blob/master/README.zh-CN.md

我們一起訓練一個模型,然后用它來甄別所屬的服飾品類吧!

線性 Classifier

我們先從構建一個線性的 classifier 開始,來看看怎么操作。同以往一樣,我們用 TensorFlow 的評估器框架(鏈接參見段后) 來簡化編程和維護。回憶一下,我們會經歷加載數據、創建 classifier,然后運行訓練和評估等操作。另外還會用本地模型直接做一些預測,官方文檔參考:

https://tensorflow.google.cn/get_started/get_started_for_beginners?hl=zh-CN

下面從創建模型開始,我們首先把數據集中的圖像從 28x28 的像素排布轉為 1x784 的形式,然后將之稱為特征列 pixels。此操作類似于 AIA 第三期:無需數學知識,輕松搞定鳶尾花辨識模型中出現的 flower_features。

feature_columns = [ tf.feature_column.numeric_column( "pixels", shape=784)]classifier = tf.estimator.LinearClassifier( feature_columns=feature_columns, n_classes=10, model_dir=logdir)

下一步創建線性的 classifier。我們有 10 種品類需要做標記,而不是之前鳶尾花案例中的三種。

要開始訓練,我們需要配置數據集和輸入函數。TensorFlow 有內置的函數接受一個 NumPy 型的數組用于生成輸入函數,此處我們就用它來簡化一下。

tf.estimator.inputs.numpy_input_fn( x={'pixels': X}, y=Y, batch_size=batch_size, num_epochs=epochs, shuffle=shuffle)DATA_SETS = input_data.read_data_sets( "/tmp/fashion-mnist")

接著用 input_data 模塊把數據集載入,將函數參數指向數據集下載的位置。

然后通過調用 classifier.train() 把 classifier、輸入函數和數據集都結合起來。

classifier.train( input_fn=train_input_fn, steps=num_steps)accuracy_score = classifier.evaluate( input_fn=eval_input_fn)['accuracy']

最終,我們進行一次評估來看看模型表現如何。使用經典 MNIST 數據集時,此模型常常得到 91% 左右的準確度。然后,由于時尚版 MNIST 有更復雜的數據集,所以只得到了略高于 80% 的精確度,甚至有時更低一些。

怎樣才能改善呢?如 AIA第六期:通過深度神經網絡再識 Estimator 中提到的那樣進行就好了。

轉為深度模型

切換到 DNNClassifier 就是換一行代碼的功夫,現在重新開始訓練,然后評估看看是否深度模型會比線性的好一些。

classifier = tf.estimator.DNNClassifier( feature_columns=feature_columns, n_classes=10, hidden_units=[100, 75, 50], model_dir=logdir )

正如第五期:通過 TensorBoard 將模型可視化 中討論的那樣,我們應當用 TensorBoard 來橫向并且比較一下兩個模型。

tensorboard --logdir=models/fashion_mnist/

瀏覽器打開 http://localhost:6006

TensorBoard

看看 Tensorboard,似乎深度模型并沒有比線性模型好到哪里去!這很可能是對超參數的微調不到位導致的,參見 AIA 第二期:機器學習常見的七個步驟。

o4YBAFsgiveAZCzQAAE6-rwk87E803.png

看起來好像是要一路飆到底…

也許是我們的模型需要更大一些來容納如此搞復雜度的模型?抑或訓練應該更少一些?我們來試試看。經過屢次調試微參數,模型的失真度突破性降低了,并且比線性模型得到的精度更高。

o4YBAFsgiveAOFtzAAEELJSTnDw830.png

深度模型(藍色對比線性的紅色線)的失真度保持較低狀態

達到這一精度之前在訓練中多了些步驟,但是最終得到更高精度又使得這些付出非常值得。

由圖可見線性模型的平緩期來得比深度網絡要早。這是由于深度模型復雜度更高,它們需要的訓練時間更長。

此時,模型差不多滿足我們的要求了。我們可以將其導出,然后產生一個可伸縮的時尚版 MNIST classifier API。至于如何導出,可以參照第四期中給出的詳細步驟。

預測

我們快速回顧一下用評估器做預測的方法。很大程度上,它就像是我們訓練和評估的方式;這也是評估器(框架)的極大優勢——通用一致的函數接口。

X = DATA_SETS.test.images[5000:5005]predict_input_fn = tf.estimator.inputs.numpy_input_fn( x={'pixels': X}, batch_size=1, num_epochs=1, shuffle=False)predictions = classifier.predict( input_fn=predict_input_fn)

注意我們這次把 batch_size 指定為 1,num_epochs 指定為 1,shuffle 值為 false。這是因為我們想要按著順序一個一個的預測,一次在所有數據上進行預測。我從評估所用數據集中間挑選了 5 幅圖像用于預測。

我選擇這 5 幅的原因不僅僅是因為它們在正中間,還因為這些模型中有兩個是不正確的。兩個都應該是襯衫,但卻被模型認為第三個是包而第五個是大衣。由此,僅僅考慮圖像的紋理變化這個因素,你能看到這些樣本比起手寫數字來說是多么有挑戰性。

后續步驟

你可以在這個 Gist(鏈接在段后)上看到本次分享中所用來訓練和生成圖像的代碼。你的模型表現如何?你所最終采用的參數又是什么樣的?在評論當中分享一下吧!

https://gist.github.com/yufengg/2b2fd4b81b72f0f9c7b710fa87077145

精彩提要

后續的幾期將會著眼于機器學習生態的工具,從而幫助你創建自己的操作流程和工具鏈。與此同時也會展示更多可以用來解決機器學習問題的模型體系結構。我非常期待能在后面的分享中繼續為你分析解答!在那之前,不要忘了多使用機器學習!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 線性
    +關注

    關注

    0

    文章

    196

    瀏覽量

    25128
  • 機器學習
    +關注

    關注

    66

    文章

    8381

    瀏覽量

    132425
  • 數據集
    +關注

    關注

    4

    文章

    1205

    瀏覽量

    24648

原文標題:AIA 系列實戰篇 | 機器學習的「時尚版」Hello World

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    微雪Arduino系列教程五:Hello World

    某程序員退休后決定練習書法,于是重金購買文房四寶。一日,飯后突生雅興,一番研墨擬紙,并點上上好檀香。定神片刻,潑墨揮毫,鄭重地寫下一行字:hello world!在我們學習C語言是,經典的入門程序
    發表于 04-27 19:51

    機器向“時尚達人”學習的技巧概述

    如何讓機器向“時尚達人”學習?阿里做了個“實用”的圖像數據
    發表于 09-16 13:41

    Android開發之“hello World”的實現

    按照慣例,同時也是為了更好地引導讀者進入精彩的Android世界,我們接下來要實現一個簡單的“hello World”例子。
    發表于 08-24 11:20 ?5554次閱讀
    Android開發之“<b class='flag-5'>hello</b> <b class='flag-5'>World</b>”的實現

    NB3000_Hello_World

    NB3000 Hello World,好東西,喜歡的朋友可以下載來學習
    發表于 02-18 16:38 ?0次下載

    Hello_World.Constraint

    Hello World,好東西,喜歡的朋友可以下載來學習
    發表于 02-22 15:52 ?0次下載

    MICROCHIP MINUTES 4 - HELLO WORLD

    歡迎觀看MICROCHIP MINUTES之MPLAB? X IDE系列短片。在本視頻中,我們將編譯HELLO WORLD應用程序。本視頻使用PICDEM? Curiosity開發板及開發板上的PIC16F1619單片機。
    的頭像 發表于 06-07 05:46 ?2870次閱讀

    【從零開始走進FPGA】 LCD1602 Hello World

    關鍵詞:FPGA , LCD1602 前面說過,在C,C++等語言學習中,“Hello World”將會是第一個學習的代碼,但是在FPGA中由于電路驅動的復雜性,與單片機雷同,我們無法
    發表于 10-01 15:40 ?809次閱讀

    米爾科技Linux簡單Hello World應用程序的教程

    以下為米爾科技工程師在使用DS-5過程中總結的經驗步驟,一個簡單的實用Hello World工程。
    的頭像 發表于 11-21 17:02 ?1370次閱讀
    米爾科技Linux簡單<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>應用程序的教程

    如何用多種編程語言寫“Hello,World!”程序

    用 50 種編程語言寫“Hello,World!”程序
    的頭像 發表于 01-09 13:49 ?3929次閱讀

    教你如何搭建淺層神經網絡&quot;Hello world&quot;

    作為圖像識別與機器視覺界的 "hello world!" ,MNIST ("Modified National Institute of Standards and Technology")
    的頭像 發表于 12-10 18:35 ?902次閱讀

    基于Nios 的 hello world

    基于Nios || 的 hello world一、Qsys二、Nios ||介紹三、利用Niso ||實現hello world(一)硬件設計(二)軟件設計(三)下載硬件和軟件一、Qs
    發表于 11-30 17:36 ?9次下載
    基于Nios  的 <b class='flag-5'>hello</b> <b class='flag-5'>world</b>

    HELLO WORLD!

    HELLO WORLD
    發表于 12-03 16:21 ?8次下載
    <b class='flag-5'>HELLO</b> <b class='flag-5'>WORLD</b>!

    STM32開發入門(二)——Hello World

    STM32開發入門(二)——Hello World
    發表于 12-07 18:51 ?11次下載
    STM32開發入門(二)——<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>

    ZYNQ學習筆記_ZYNQ簡介和Hello World

    ZYNQ學習筆記_ZYNQ簡介和Hello WorldZYNQ介紹PS和PL的連接ZYNQ開發工具鏈在PS端編寫Hello World程序ZYNQ介紹ZYNQ-7000系列是基于Xil
    發表于 12-22 19:11 ?10次下載
    ZYNQ<b class='flag-5'>學習</b>筆記_ZYNQ簡介和<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>

    Zynq上使用Vitis的雙ARM Hello World

    電子發燒友網站提供《Zynq上使用Vitis的雙ARM Hello World.zip》資料免費下載
    發表于 12-14 10:15 ?1次下載
    Zynq上使用Vitis的雙ARM <b class='flag-5'>Hello</b> <b class='flag-5'>World</b>