了解1D和3D卷積神經網絡|Keras

2020-12-04 人工智慧遇見磐創

當我們說卷積神經網絡(CNN)時,通常是指用於圖像分類的2維CNN。但是,現實世界中還使用了其他兩種類型的卷積神經網絡,即1維CNN和3維CNN。在本指南中,我們將介紹1D和3D CNN及其在現實世界中的應用。我假設你已經大體上熟悉卷積網絡的概念。

2維CNN | Conv2D

這是在Lenet-5架構中首次引入的標準卷積神經網絡。Conv2D通常用於圖像數據。之所以稱其為2維CNN,是因為核在數據上沿2維滑動,如下圖所示。

使用CNN的整體優勢在於,它可以使用其核從數據中提取空間特徵,而其他網絡則無法做到。例如,CNN可以檢測圖像中的邊緣,顏色分布等,這使得這些網絡在圖像分類和包含空間屬性的其他類似數據中非常強大。

以下是在keras中添加Conv2D圖層的代碼。

import kerasfrom keras.layers import Conv2Dmodel = keras.models.Sequential()model.add(Conv2D(1, kernel_size=(3,3), input_shape = (128, 128, 3)))model.summary()

參數input_shape(128、128、3)表示圖像的(高度,寬度,深度)。參數kernel_size(3,3)表示核的(高度,寬度),並且核深度將與圖像的深度相同。

1維CNN | Conv1D

在介紹Conv1D之前,讓我給你一個提示。在Conv1D中,核沿一維滑動。現在讓我們考慮哪種類型的數據只需要核在一個維度上滑動並具有空間特性?

答案就是時間序列數據。讓我們看一下以下數據。

該數據是從人戴在手臂上的加速度計中收集的。數據表示所有三個軸的加速度。1維CNN可以根據加速度計數據執行活動識別任務,例如人是站著,行走,跳躍等。此數據有2個維度。第一維是時間步長,另外一個是3個軸上的加速度值。

下圖說明了核如何在加速度計數據上移動。每行代表某個軸的時間序列加速度。核只能沿時間軸一維移動。

以下是在keras中添加Conv1D圖層的代碼。

import kerasfrom keras.layers import Conv1Dmodel = keras.models.Sequential()model.add(Conv1D(1, kernel_size=5, input_shape = (120, 3)))model.summary()

參數input_shape(120,3)表示120個時間步驟,每個時間步驟中有3個數據點。這3個數據點是x,y和z軸的加速度。參數kernel_size為5,表示核的寬度,核高度將與每個時間步驟中的數據點數相同。

同樣,1維CNN也可用於音頻和文本數據,因為我們還可以將聲音和文本表示為時間序列數據。請參考下圖

Conv1D廣泛應用於感官數據,加速度計數據就是其中之一。

3維CNN | Conv3D

在Conv3D中,核按3個維度滑動,如下所示。讓我們再想想哪種數據類型需要核在3維上移動?

Conv3D主要用於3D圖像數據。例如磁共振成像(MRI)數據。MRI數據被廣泛用於檢查大腦,脊髓,內部器官等。計算機斷層掃描(CT)掃描也是3D數據的示例,它是通過組合從身體周圍不同角度拍攝的一系列X射線圖像而創建的。我們可以使用Conv3D對該醫學數據進行分類或從中提取特徵。

以下是在keras中添加Conv3D層的代碼。

import kerasfrom keras.layers import Conv3Dmodel = keras.models.Sequential()model.add(Conv3D(1, kernel_size=(3,3,3), input_shape = (128, 128, 128, 3)))model.summary()

這裡參數Input_shape(128,128,128,3)有4個維度。3D圖像也是4維數據,其中第四維代表顏色通道的數量。就像平面2D圖像具有3維一樣,其中3維代表色彩通道。參數kernel_size(3,3,3)表示核的(高度,寬度,深度),並且核的第4維與顏色通道相同。

總結

在1D CNN中,核沿1個方向移動。一維CNN的輸入和輸出數據是二維的。主要用於時間序列數據。在2D CNN中,核沿2個方向移動。2D CNN的輸入和輸出數據是3維的。主要用於圖像數據。在3D CNN中,核沿3個方向移動。3D CNN的輸入和輸出數據是4維的。通常用於3D圖像數據(MRI,CT掃描)。下一篇我們將講解理解卷積神經網絡中的輸入與輸出形狀(Keras實現)

相關焦點

  • 用TensorFlow和Keras構建卷積神經網絡
    全文共9940字,預計學習時長20分鐘或更長不同神經網絡結構各有所長。本文主要介紹如何在Python中使用TensorFlow和Keras構建卷積神經網絡。卷積神經網絡是過去十年中深度學習成為一大熱點的部分原因。今天將使用TensorFlow的eager API來訓練圖像分類器,以辨別圖像內容是狗還是貓。人工神經網絡在許多領域都展現出了其強大功能,最近已經應用到很多行業中。
  • 使用Keras構建具有自定義結構和層次圖卷積神經網絡
    來源:DeepHub IMBA本文約3600字,建議閱讀5分鐘本文為你介紹了如何構建具有自定義結構和層次的神經網絡:Keras中的圖卷積神經網絡(GCNN)。如何構建具有自定義結構和層次的神經網絡:Keras中的圖卷積神經網絡(GCNN)在生活中的某個時刻我們會發現,在Tensorflow Keras中預先定義的層已經不夠了!我們想要更多的層!我們想要建立一個具有創造性結構的自定義神經網絡!幸運的是,通過定義自定義層和模型,我們可以在Keras中輕鬆地執行此任務。
  • Pytorch:分步實施3D卷積神經網絡(附代碼教程!)
    如何編寫3d CNN的PyTorch教程首先,我們需要簡單解釋一下什麼是3d CNN,以及它與通用2d CNN的區別。然後,我們將逐步分析如何使用Pytorch實現3D卷積神經網絡。什麼是3D卷積神經網絡?
  • Keras和TensorFlow究竟哪個會更好?
    我會使用基於 TensorFlow 的標準 keras 模塊和 tf.keras 模塊,來實現一個卷積神經網絡(CNN)。然後,基於一個示例數據集,來訓練這些 CNN,然後檢查所得結果,你會發現,Keras 和 TensorFlow 是可以和諧共處的。
  • 深度學習入門:淺析卷積神經網絡
    至今已有數種深度學習方法,如卷積神經網絡(CNN)、自編碼神經網絡(包括Auto encoder和Sparse Coding)和深度置信網絡(DBN),並在各個領域中取得了極好的效果。圖像分類是從固定的一組分類中分配輸入圖像一個標籤的任務,在本案例中,我們將以Fashion-MNIST圖像數據集為例,了解並使用不同的神經網絡模型來對其進行分類,並比較不同網絡的預測效果。本案例的學習分為三個部分,首先是目標問題的數據集介紹,了解數據背景是解決問題的重要前提;接著,我們會介紹基本的邏輯回歸模型,在此基礎上引入本案例的核心——卷積神經網絡。
  • 使用卷積神經網絡,構建圖像分類模型檢測肺炎
    來源 | DeepHub IMBA作者 | Eunjoo Byeon在本篇文章中,我將概述如何使用卷積神經網絡構建可靠的圖像分類模型,以便從胸部x光圖像中檢測肺炎的存在。肺炎是一種常見的感染,它使肺部的氣囊發炎,引起呼吸困難和發燒等症狀。
  • 梯度上升可視化卷積神經網絡
    為什麼我的CNN網絡模型訓練出來的東西總是過度擬合?已經改了很多次參數都不行,到底是樣本有問題還是網絡模型定義有問題?問題在哪來?CNN網絡模型中的每一層學習的是些什麼特徵?為什麼有的人說第一層卷積核提取的是邊緣信息特徵,有的人卻說第一層卷積核提取的是顏色特徵?到底是兩者都有還是什麼回事?CNN網絡可不可以減掉幾層然後保持相同的精度和損失率呢?
  • 「範例卷積神經網絡」和信息最大化
    這一方法也能被理解為「卷積神經網絡範例」。我們在案例中只使用了一個數量適中的訓練圖像集,「範例卷積神經網絡」恰恰利用了這一點,把數據分布表示為一個經驗分布(離散有限可能性的分布)。假設我們離散了分布,使之變得不連續,那麼「範例卷積神經網絡」就能夠被推導成為「種子圖像」和其表徵之間的互信息的一個下界。
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    TensorFlow框架儘管意義非凡,引起極大關注和神經網絡學習風潮,但對一般開發者用戶太不友好。軟體開發者畢竟不是科學家,很多時候簡單易學易用是程式設計師選擇的第一要素。目前,兩個主要的深度學習庫Keras和Pytorch獲得了大量關注,主要是因為它們的使用比較簡單。
  • 用Keras和「直方圖均衡」為深度學習實現「圖像擴充」
    在這篇文章中,我們將要討論的內容是:深度神經網絡,尤其是卷積神經網絡(CNN),非常擅長於圖像分類。事實證明,最先進的卷積神經網絡在圖像識別方面的性能已經超過了人類水平。之後我們將討論如何轉換keras預處理圖像文件,以啟用直方圖均衡法。我們將使用Keras附帶的cifar10數據集,但是為了使任務小到能夠順利在CPU上執行,我們將只會使用其中的貓和狗的圖像。首先,我們需要加載cifar10數據集並格式化其中的圖像,為卷積神經網絡做好準備。我們還要檢查一下部分圖像,確保數據已經完成了正確的加載。
  • 小白學CNN以及Keras的速成
    二、開始學習CNN在理解CNN之前,我們有必要先理解一下什麼是神經網絡,這樣才能開始了解更高級的卷積神經網絡。要學習神經網絡當然有很多途徑,網上不少的大牛寫了很多攻略,有的推崇從理論到工程完成深度學習,有的希望從工程出發發現問題,解決問題。
  • MSRA視頻理解新突破,實現199層三維卷積神經網絡
    (Pseudo-3D Convolution)的深度神經網絡的設計思路,並實現了迄今為止最深的 199 層三維卷積神經網絡。通基於三維卷積神經網絡的視頻特徵提取為了使用深度神經網絡來提取視頻中時間和空間維度上的信息,一種直接的思路就是將用於圖像特徵學習的二維卷積拓展為三維卷積(3D Convolution),同時在時間和空間維度上進行卷積操作。如此一來,由三維卷積操作構成的三維卷積神經網絡可以在獲取每一幀視覺特徵的同時,也能表達相鄰幀隨時間推移的關聯與變化,如下圖所示。
  • Keras官方中文版文檔正式發布了
    同時支持卷積神經網絡和循環神經網絡,以及兩者的組合。在 CPU 和 GPU 上無縫運行與切換。Keras 兼容的 Python 版本: Python 2.7-3.6。使用簡介Keras 模型的使用一般可以分為順序模型(Sequential)和 Keras 函數式 API,順序模型是多個網絡層的線性堆疊,而 Keras 函數式 API 是定義複雜模型(如多輸出模型、有向無環圖,或具有共享層的模型)的方法。
  • 看懂這篇指南,包你掌握神經網絡的「黑匣子」
    全文共4327字,預計學習時長20分鐘或更長「人類的神經網絡是如何運行的?」這個問題讓很多數據科學家感到困惑。解釋某個簡單神經網絡的工作機制非常容易,但是當某個計算機視覺項目中的層數增加1000倍時,該怎麼辦呢?終端用戶想要了解模型是如何得到最終結果時,僅用紙和筆來解釋深度神經網絡的工作機制是行不通的。
  • 要想了解卷積神經網絡,首先需要了解三種基本架構
    卷積網絡是研究關於圖像(紋理,圖像尺度等)的抽象層面的一種網絡,跟傳統網絡不同的是,它不僅可以根據一個固定尺寸圖像生成物體識別數據,還可以對圖像其他部分進行其他操作。卷積可以有多個,它的作用是「放大」和「增強」圖像的抽象空間。那麼卷積可以用於哪些場景呢?
  • Keras結合Keras後端搭建個性化神經網絡模型(不用原生Tensorflow)
    它幫我們實現了一系列經典的神經網絡層(全連接層、卷積層、循環層等),以及簡潔的迭代模型的接口,讓我們能在模型層面寫代碼,從而不用仔細考慮模型各層張量之間的數據流動。但是,當我們有了全新的想法,想要個性化模型層的實現,Keras的高級API是不能滿足這一要求的,而換成Tensorflow又要重新寫很多輪子,這時,Keras的後端就派上用場了。
  • 卷積神經網絡(CNN)新手指南
    以類似的方式計算機能夠進行圖像分類任務,通過尋找低層次的特徵如邊緣和曲線,然後運用一系列的卷積層建立一個更抽象的概念。這是卷積神經網絡應用的一個總體概述,接下來我們來探討下細節。生物聯繫首先要稍微普及下一點背景知識,當你第一次聽到卷積神經網絡這個詞時,你也許會想這是是不與神經科學或者生物學有關?恭喜你,猜對了一部分。卷
  • 機器視角:長文揭秘圖像處理和卷積神經網絡架構
    近日,Dishashree Gupta 在 Analyticsvidhya 上發表了一篇題為《Architecture of Convolutional Neural Networks (CNNs) demystified》的文章,對用於圖像識別和分類的卷積神經網絡架構作了深度揭秘;作者在文中還作了通盤演示,期望對 CNN 的工作機制有一個深入的剖析。
  • Keras入門系列教程:兩分鐘構建你的第一個神經網絡模型
    導入tf.kerastf.keras是TensorFlow實現的 Keras API規範。這是一個用於構建和訓練模型的高級API,其中包括對TensorFlow特定功能的一流支持,例如急切執行, tf.data pipeline和estimators。
  • 淺析人工智慧的卷積神經網絡與圖像處理
    淺析人工智慧的卷積神經網絡與圖像處理 demi 發表於 2019-11-02 11:23:43 在人工智慧深度學習技術中,有一個很重要的概念就是卷積神經網絡 CNN(Convolutional Neural