初學者怎樣使用Keras進行遷移學習

2021-01-10 手機鳳凰網

訓練數據必須以特定格式存儲,以便饋送到網絡中進行訓練。我們將使用Keras中提供的ImageDataGenerator來訓練我們的可用數據模型。這樣,就代碼而言,該過程變得更加簡單。

必須有一個主數據文件夾,在該數據文件夾中,每個包含相應圖像的數據類必須有一個文件夾。文件夾的名稱必須是其各自類的名稱。

模型的構建是一個三步過程:

導入預先訓練的模型並添加密集層。

將數據加載到ImageDataGenerators中。

訓練和評估模型。

首先,載入相關包

import pandas as pd
import numpy as np
import os
import keras
import matplotlib.pyplot as plt
from keras.layers import Dense,GlobalAveragePooling2D
from keras.applications import MobileNet
from keras.preprocessing import image
from keras.applications.mobilenet import preprocess_input
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Model
from keras.optimizers import Adam

然後,導入預訓練好的MobileNet模型。Mobilenet(在Imagenet數據集上針對1000個類進行了訓練)的最後一層由1000個神經元組成(每類一個)。 我們需要在網絡的最後一層有儘可能多的神經元,一遍我們得到和我們想要識別的圖片類別的數量一樣。 因此,我們刪掉這個了1000個神經元的網絡層,並在網絡最後添加了我們自己的定義的全連接層。

這過程可以通過導入模型時設置(IncludeTop=False)來實現。

假設你想訓練一個犬種分類器來識別120種不同的犬種,我們最後一層只需要120個神經元。使用以下代碼完成。

這是這個過程的第一步。導入和構建所需的模型。

要檢查模型的體系結構,我們只需要使用下面給出的這行代碼。

for i,layer in enumerate(model.layers):
print(i,layer.name)

現在我們有了模型,我們將使用預先訓練的權重,我們的模型已經在(Imagenet數據集)上訓練過了,我們必須將所有的權重設置為不可訓練。我們將只訓練我們之前製作的最後一層緻密層。下面給出了這樣做的代碼。

for layer in model.layers:
layer.trainable=False
# or if we want to set the first 20 layers of the network to be non-trainable
for layer in model.layers[:20]:
layer.trainable=False
for layer in model.layers[20:]:
layer.trainable=True

現在我們進入流程的第2步,將訓練數據加載到ImageDataGenerator中。

ImageDataGenerators內置在keras中,幫助我們訓練我們的模型。我們只需要指定訓練數據的路徑,它就會自動分批發送訓練數據。它使代碼更加簡單。為此,我們需要使用博客前面提到的特定格式的培訓數據。

train_datagen=ImageDataGenerator(preprocessing_function=preprocess_input) #included in our dependencies

train_generator=train_datagen.flow_from_directory('path-to-the-main-data-folder',
target_size=(224,224),
color_mode='rgb',
batch_size=32,
class_mode='categorical',
shuffle=True)

接下來我們進入步驟3,在數據集上訓練模型。

為此,我們首先編譯我們創建的模型,然後用generator訓練我們的模型。這可以使用下面的代碼來完成。

model.compile(optimizer='Adam',loss='categorical_crossentropy',metrics=['accuracy'])
# Adam optimizer
# loss function will be categorical cross entropy
# evaluation metric will be accuracy

step_size_train=train_generator.n//train_generator.batch_size
model.fit_generator(generator=train_generator,
steps_per_epoch=step_size_train,
epochs=10)

有了這個,我們將訓練一個模型。然後,通過使用這個訓練過的模型預測新圖片,類似代碼model.predict(new_image)。

獲取Github上的代碼。

一如既往,快樂學習。

想要繼續查看該篇文章相關連結和參考文獻?

長按連結點擊打開或點擊【初學者怎樣使用Keras進行遷移學習】:

https://ai.yanxishe.com/page/TextTranslation/1184

AI研習社每日更新精彩內容,觀看更多精彩內容:雷鋒網雷鋒網雷鋒網

使用樹莓派和Python實現目標檢測傑出數據科學家的關鍵技能是什麼?初學者怎樣使用Keras進行遷移學習如果你想學數據科學,這 7 類資源千萬不能錯過

等你來譯:

深度學習目標檢測算法綜述一文教你如何用PyTorch構建 Faster RCNN高級DQNs:利用深度強化學習玩吃豆人遊戲用於深度強化學習的結構化控制網絡 (ICML 論文講解)"

相關焦點

  • Keras vs PyTorch:誰是第一深度學習框架?
    兩大框架的連結:  Keras:https://github.com/keras-team/keras (https://keras.io/)  PyTorch:https://github.com/pytorch/pytorch  你想學習深度學習嗎?
  • 使用PyTorch進行主動遷移學習:讓模型預測自身的錯誤
    本文詳細說明主動遷移學習, 它是主動學習和遷移學習技術的結合,本文將實現書籍  Human-in-the-Loop Machine Learning 中的所有用到 PyTorch 的方法。如果這個用例碰巧是主動學習,那麼我們將把機器學習中最有趣的部分應用到解決機器學習中最重要的問題中:人類和人工智慧如何一起解決問題?在當前的機器學習中,遷移學習通常是指獲取一個現有的神經模型,然後對最後一層 (或最後幾層) 進行再訓練,以完成新的任務,它可以表示為:遷移學習的一個例子。
  • Keras vs PyTorch,哪一個更適合做深度學習?
    當你決定學習深度學習時,有一個問題會一直存在——學習哪種工具?深度學習有很多框架和庫。這篇文章對兩個流行庫 Keras 和 Pytorch 進行了對比,因為二者都很容易上手,初學者能夠輕鬆掌握。那麼到底應該選哪一個呢?本文分享了一個解決思路。
  • Keras和TensorFlow究竟哪個會更好?
    深度學習發展勢頭迅猛,但近兩年湧現的諸多深度學習框架讓初學者無所適從。如 Google 的 TensorFlow、亞馬遜的 MXNet、Facebook 支持的 PyTorch、Theano、Caffe、CNTK、Chainer、百度的 PaddlePaddle、DSSTNE、DyNet、BigDL、Neon 等等。
  • 使用TF2與Keras實現經典GNN的開源庫——Spektral
    我們可以使用 Spektral 來進行網絡節點分類、預測分子特性、使用 GAN 生成新的拓撲圖、節點聚類、預測連結以及其他任意數據是使用拓撲圖來描述的任務。以下是使用 Spektral 編寫的圖神經網絡在 MNIST 數據集上的訓練結果:驗證結果如下:我們將網絡權重可視化後,可得到下面這樣的效果:下圖展示了兩個圖卷積層的可視化效果。我們可以此來觀察圖神經網絡是否能夠學習到,與傳統卷積神經網絡類似的特徵。
  • 圖像分類入門,輕鬆拿下90%準確率|教你用Keras搞Fashion-MNIST
    原作 Margaret Maynard-Reid王小新 編譯自 TensorFlow的Medium量子位 出品 | 公眾號 QbitAI這篇教程會介紹如何用TensorFlow裡的tf.keras函數,對Fashion-MNIST數據集進行圖像分類。
  • 掌握深度學習,數據不足也能進行圖像分類!
    · 最後,要求分類器對之前從未接觸過的新圖像進行標籤預測,隨後對比這些圖像的實際標籤和分類器預測的標籤,以此來評估分類器的性能。首先是編寫代碼。一開始先加載keras及其各層,這些將用於後面的模型構建。
  • 使用tensorflow進行音樂類型的分類
    特別是,我們評估了標準機器學習和深度學習方法的性能。我們發現特徵工程是至關重要的,而領域知識可以真正提高性能。在描述了所使用的數據源之後,我對我們使用的方法及其結果進行了簡要概述。在本文的最後一部分,我將花更多的時間來解釋googlecolab中的TensorFlow框架如何通過TFRecord格式在GPU或TPU運行時高效地執行這些任務。
  • 用Keras和「直方圖均衡」為深度學習實現「圖像擴充」
    在本文中,我們將討論一些常見的、富有創意的方法,這些方法也是Keras深度學習庫為擴充圖像數據所提供的。之後我們將討論如何轉換keras預處理圖像文件,以啟用直方圖均衡法。我們將使用Keras附帶的cifar10數據集,但是為了使任務小到能夠順利在CPU上執行,我們將只會使用其中的貓和狗的圖像。首先,我們需要加載cifar10數據集並格式化其中的圖像,為卷積神經網絡做好準備。
  • 使用Keras將音樂分類為不同類型
    我們將使用Keras,採用tensorflow作為後端。  機器學習模型創建,訓練和測試   創建模型  from keras import models from keras import layers model = models.Sequential() model.add(layers.Dense(256, activation='relu', input_shape=(
  • TensorFlow 2入門指南,初學者必備!
    TensorFlow是谷歌推出的深度學習框架,於2019年發布了第二版。 它是世界上最著名的深度學習框架之一,被行業專家和研究人員廣泛使用。Tensorflow v1難以使用和理解,因為它的Pythonic較少,但是隨著Keras發行的v2現在與Tensorflow.keras完全同步,它易於使用,易學且易於理解。
  • 這是一份覆蓋全面的基於 PyTorch 和 keras 的 NLP...
    相信在人工智慧領域,沒有人不知道這三位,眾所周知,他們被稱為「深度學習三巨頭」。作為人工智慧領域「皇冠上的明珠」,NLP 技術在經歷了過去幾年的發展之後,證明了它落地的可行性,因此目前也是相當火爆。想必同學們也會經常在網上找一些好的學習資源。最近,小編在 github 上發現了一份基於 PyTorch 和 keras 的 NLP 學習教程。
  • 聯邦學習 OR 遷移學習?No,我們需要聯邦遷移學習
    與此同時,基於遷移學習的的特性,FTL 的參與方可以擁有自己的特徵空間,而無需強制要求所有參與方都擁有或使用相同特徵的數據,這使得 FTL 適合於更多的應用場景。本文關注聯邦遷移學習方法,在介紹聯邦學習和遷移學習相關知識的基礎上,重點探討向經典聯邦學習中引入遷移學習的目的和意義。此外,本文還將梳理目前主流的聯邦遷移學習方法,並重點介紹其中的 4 篇文章。
  • 評測| CNTK在Keras上表現如何?能實現比TensorFlow更好的深度學習嗎?
    在雲端進行深度學習在雲端設置基於 GPU 的深度學習實例令人驚訝地被忽視了。大多數人建議使用亞馬遜 AWS 服務,它包含所有可用的 GPU 驅動,只需參照固定流程(https://blog.keras.io/running-jupyter-notebooks-on-gpu-on-aws-a-starter-guide.html)設置遠程操作。
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    TensorFlow框架儘管意義非凡,引起極大關注和神經網絡學習風潮,但對一般開發者用戶太不友好。軟體開發者畢竟不是科學家,很多時候簡單易學易用是程式設計師選擇的第一要素。目前,兩個主要的深度學習庫Keras和Pytorch獲得了大量關注,主要是因為它們的使用比較簡單。
  • Keras官方中文版文檔正式發布了
    但該項目還在進行中,雖然目前已經上線了很多 API 文檔和使用教程,但仍然有一部分內容沒有完成。其實早在官方中文文檔出現以前,就有開發者構建了 Keras 的中文文檔,而且很多讀者都在使用 MoyanZitto 等人構建的中文文檔。
  • Deep CARs:使用Pytorch學習框架實現遷移學習
    更準確地說,是使用一個深度神經網絡,因此得名Deep CARs(深度計算機自動額定值系統)。想要實現這一目標,需要完成兩部分的學習,第1部分:構建汽車分類器;第2部分:部署分類器。本文將著重論述第1部分內容。我們將使用一種叫做遷移學習的方法來訓練分類器。什麼是遷移學習?
  • 初學者怎樣養熱帶魚,怎樣區別海水熱帶魚和淡水熱帶魚
    大家好,今天小編為大家分享初學者怎樣養熱帶魚,還有怎樣區別海水熱帶魚和淡水熱帶魚。熱帶魚分為淡水熱帶魚和海水熱帶魚,淡水熱帶魚是指生活在淡水中的熱帶魚,一般我們家中養的都是淡水熱帶魚,至於生活在熱帶海水中的魚,它們被稱為海水熱帶魚。
  • 基於RTX2060構建TensorFlow-gpu(keras)學習平臺
    開始菜單運行anaconda navigator檢查是否安裝了notebook(默認有安裝)三、安裝tensorflow/keras在激活的環境中安裝:1. 如果機器上有gpu,則安裝gpu版本,沒有GPU就安裝cpu版。
  • 小白學CNN以及Keras的速成
    sherlock使用的是Google的開源框架Tensorflow,因為Google開源了tensorflow之後其社區非常活躍,而且版本更新也非常穩定,所以我就選擇了這個框架。對於框架之爭,在知乎上已經有很多人在撕逼了,這個就好比哪種程式語言好這個問題一樣。