C語言中文網 目錄
TensorFlow
1 TensorFlow是什么
2 TensorFlow安裝和下載
3 第一個TensorFlow程序
4 TensorFlow程序結構
5 TensorFlow常量、變量和占位符
6 TensorFlow矩陣基本操作
7 TensorFlow TensorBoard數據流圖可視化
8 TensorFlow代碼自動升級為1.0版本
9 TensorFlow XLA
10 TensorFlow指定CPU和GPU設備
11 TensorFlow與深度學習
12 TensorFlow常用Python擴展包
13 回歸算法有哪些
14 TensorFlow損失函數
15 TensorFlow優化器
16 TensorFlow csv文件讀取數據
17 TensorFlow實現簡單線性回歸
18 TensorFlow實現多元線性回歸
19 TensorFlow邏輯回歸處理MNIST數據集
20 感知機與神經網絡
21 TensorFlow常用激活函數(6種)
22 TensorFlow實現單層感知機
23 TensorFlow實現反向傳播算法
24 TensorFlow多層感知機實現MINIST分類
25 TensorFlow多層感知機函數逼近
26 TensorFlow超參數
27 TensorFlow Keras
28 CNN卷積神經網絡
29 三維卷積神經網絡預測MNIST數字
30 卷積神經網絡分類圖片
31 遷移學習
32 DeepDream網絡
33 TensorFlow實現文本情感分析
34 VGG網絡濾波器
35 VGGNet、ResNet、Inception和Xception
36 預建深度學習提取特征及實現
37 TensorFlow實現InceptionV3
38 TensorFlow WaveNet聲音合成
39 TensorFlow視頻分類(6種方法)
40 RNN循環神經網絡
41 神經機器翻譯(seq2seq RNN)
42 注意力機制(基于seq2seq RNN)
43 RNN訓練模型并生成文本
44 RNN循環神經網絡實現預測比特幣價格
45 主成分分析法(PCA)
46 k均值聚類算法
47 SOM自組織映射法
48 受限玻爾茲曼機訓練
49 推薦系統的實現(基于RBM)
50 基于DBN實現情緒檢測
51 自編碼器
52 標準自編碼器
53 稀疏自編碼器
54 去燥自編碼器
55 卷積自編碼器
56 堆疊自編碼器
57 強化學習
58 OpenAI Gym安裝和使用
59 全連接神經網絡實現玩Pac-Man游戲
60 Q learning實現Cart-Pole平衡游戲
61 DQN算法(深度Q網絡)
62 David Silver策略梯度算法
63 深度學習在移動端的應用
64 Android移動端部署TensorFlow mobile
65 iPhone移動端部署TensorFlow mobile
66 移動端優化TensorFlow代碼
67 GAN生成式對抗網絡
68 GAN生成式對抗網絡虛構MNIST圖像
69 DCGAN虛構MNIST圖像
70 DCGAN虛構名人面孔和其他數據集
71 VAE變分自編碼器
72 CapsNet膠囊網絡
73 TensorFlow分布式
74 TensorFlow GPU的安裝和使用
75 TensorFlow分布式
76 TensorFlow分布式訓練MNIST分類器
77 TensorFlow Serving運行Docker容器
78 TensorFlow分布式在谷歌云平臺運行
79 TensorFlow分布式在谷歌CloudML運行
80 TensorFlow分布式在Microsoft Azure上運行
81 TensorFlow分布式在Amazon AWS上運行
首頁 > TensorFlow 閱讀:200

TensorFlow實現InceptionV3詳解

遷移學習是一種非常強大的深度學習技術,在不同的領域有著各種應用。遷移學習的思想很簡單,可以用類比來解釋。假設你想學習一種新的語言,比如西班牙語,那么從你已經知道的另一種語言,比如說英語開始學起,可能會有所幫助。

遵循這一思路,計算機視覺研究人員通常使用預先訓練的 CNN 為新任務生成表示,其中新任務數據集可能不夠大,無法從頭開始訓練整個 CNN。另一個常見的策略是采用預先訓練好的 ImageNet 網絡,然后對整個網絡進行微調以完成新任務。

InceptionV3 網絡是由 Google 開發的一個非常深的卷積網絡。Keras 實現了完整的網絡,如下圖所示,它是在 ImageNet 上預先訓練好的。這個模型的默認輸入尺寸是 299×299,有三個通道。

圖1 ImageNet v3 網路結構示意圖(點此查看高清大圖

這個框架的例子受 Keras 網站上的在線模型(https://keras.io/applications/)啟發。假設在一個域中有一個與 ImageNet 不同的訓練數據集 D。D 具有 1024 個輸入特征和 200 個輸出類別。

具體實現過程

  1. 導入預處理模型和處理所需的庫:


     
  2. 使用一個訓練過的 Inception-v3 網絡,但是不包括頂層模型,因為想要在 D 上進行微調。頂層是一個密集層,有 1024 個輸入,最后一個輸出層是一個 softmax 密集層,有 200 個輸出類。

    x=GlobalAveragePooling2D()(x) 用于將輸入轉換為密集層處理的正確形狀。實際上,base_model.output tensor 的形態有 dim_ordering="th"(對應樣本...通道)或者 dim_ordering="tf"(對應樣本,通道,行,列),但是密集層需要將其調整為(樣本,通道)GlobalAveragePooling2D 按(行,列)平均。所以如果你看最后四層(include_top=True),你會看到這些形狀:


     
  3. 如果包含 _top=False,則會刪除最后三層并顯示 mixed_10 層,因此 GlobalAveragePooling2D 層將(None...2048)轉換為(None,2048),其中(None,2048)張量是(None...2048)張量中每個對應的(8,8)子張量的平均值:


     
  4. 所有卷積層都是預先訓練好的,所以在整個模型的訓練過程中凍結它們:


     
  5. 對模型進行編譯并訓練幾批次,以便對頂層進行訓練:


     
  6. 接下來凍結 Inception 中的頂層并微調 Inception 層。在這個例子中,凍結了前 172 層(一個用來微調的超參數):


     
  7. 重新編譯模型進行微調優化。需要重新編譯模型以使這些修改生效:

解讀分析

現在我們有了一個新的深度網絡,它重新使用了標準的 Inception-v3 網絡,但是它通過遷移學習在一個新的領域 D 上進行了訓練。

當然,有許多參數可以精確調整以達到較好的精度。但是,現在正在通過遷移學習重新使用一個非常大的預訓練網絡作為起點。這樣做可以通過重新使用 Keras 中已有的功能來節省訓練成本。

知識擴展

截至 2017 年,“計算機視覺”問題(在圖像中找到模式的問題)被認為已經解決了,這個問題對生活有很大影響。例如:

論文“Dermatologist-level classification of skin cancer with deep neural networks”(Andre Esteva,Brett Kuprel,Roberto A.Novoa,Justin Ko,Susan M.Swetter,Helen M.Blau & Sebastian Thrun,2017)使用由 2032 種不同疾病組成的 129450 張臨床圖像的數據集訓練 CNN。他們通過 21 位經過認證的皮膚科醫師對活檢證實的臨床圖像進行二元分類,分別區分角質形成單元癌與良性脂溢性角化病、惡性黑色素瘤與良性痣。CNN 與人類專家在這兩項任務上都達到了同樣的水平,證明了人工智能在進行皮膚癌分類中能夠與皮膚科醫生相媲美。

論文“High-Resolution Breast Cancer Screening with Multi-View Deep Convolutional Neural Networks”(Krzysztof J.Geras,Stacey Wolfson,S.Gene Kim,LindaMoy,KyunghyunCho)提出一種有望提高乳腺癌篩查過程效率的新架構,可以處理四種標準的視圖或角度。與常用的自然圖像 DCN 架構(這種架構適用于 224×224 像素的圖像)相比,MV-DCN 還能夠使用 2600×2000 像素的分辨率。

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户