【視頻】CNN(卷積神經網絡)模型以及R語言實現(xiàn)回歸數(shù)據分析|附代碼數(shù)據
全文鏈接:http://tecdat.cn/?p=18149
無人駕駛汽車最早可以追溯到1989年。神經網絡已經存在很長時間了,那么近年來引發(fā)人工智能和深度學習熱潮的原因是什么呢?(點擊文末“閱讀原文”獲取完整代碼數(shù)據)
答案部分在于摩爾定律以及硬件和計算能力的顯著提高。我們現(xiàn)在可以事半功倍。顧名思義,神經網絡的概念是受我們自己大腦神經元網絡的啟發(fā)。神經元是非常長的細胞,每個細胞都有稱為樹突的突起,分別從周圍的神經元接收和傳播電化學信號。結果,我們的腦細胞形成了靈活強大的通信網絡,這種類似于裝配線的分配過程支持復雜的認知能力,例如音樂播放和繪畫。
神經網絡結構
神經網絡通常包含一個輸入層,一個或多個隱藏層以及一個輸出層。輸入層由p個預測變量或輸入單位/節(jié)點組成。不用說,通常最好將變量標準化。這些輸入單元可以連接到第一隱藏層中的一個或多個隱藏單元。與上一層完全連接的隱藏層稱為密集層。在圖中,兩個隱藏層都是密集的。

輸出層的計算預測
輸出層計算預測,其中的單元數(shù)由具體的問題確定。通常,二分類問題需要一個輸出單元,而具有k個類別的多類問題將需要 k個對應的輸出單元。前者可以簡單地使用S形函數(shù)直接計算概率,而后者通常需要softmax變換,從而將所有k個輸出單元中的所有值加起來為1,因此可以將其視為概率。無需進行分類預測。
權重
圖中顯示的每個箭頭都會傳遞與權重關聯(lián)的輸入。每個權重本質上是許多系數(shù)估計之一,該系數(shù)估計有助于在相應箭頭指向的節(jié)點中計算出回歸

。這些是未知參數(shù),必須使用優(yōu)化過程由模型進行調整,以使損失函數(shù)最小化。訓練之前,所有權重均使用隨機值初始化。
優(yōu)化和損失函數(shù)?
訓練之前,我們需要做好兩件事一是擬合優(yōu)度的度量,用于比較所有訓練觀測值的預測和已知標簽;二是計算梯度下降的優(yōu)化方法,實質上是同時調整所有權重估計值,以提高擬合優(yōu)度的方向。對于每種方法,我們分別具有損失函數(shù)和優(yōu)化器。損失函數(shù)有很多類型,所有目的都是為了量化預測誤差,例如使用交叉熵

。流行的隨機優(yōu)化方法如Adam。
卷積神經網絡?
卷積神經網絡是一種特殊類型的神經網絡,可以很好地用于圖像處理,并以上述原理為框架。名稱中的“卷積”歸因于通過濾鏡處理的圖像中像素的正方形方塊。結果,該模型可以在數(shù)學上捕獲關鍵的視覺提示。例如,鳥的喙可以在動物中高度區(qū)分鳥。在下面描述的示例中,卷積神經網絡可能會沿著一系列涉及卷積,池化和扁平化的變換鏈處理喙狀結構,最后,會看到相關的神經元被激活,理想情況下會預測鳥的概率是競爭類中最大的。?

可以基于顏色強度將圖像表示為數(shù)值矩陣。單色圖像使用2D卷積層進行處理,而彩色圖像則需要3D卷積層,我們使用前者。?
核(也稱為濾鏡)將像素的正方形塊卷積為后續(xù)卷積層中的標量,從上到下掃描圖像。?
在整個過程中,核執(zhí)行逐元素乘法,并將所有乘積求和為一個值,該值傳遞給后續(xù)的卷積層。
內核一次移動一個像素。這是內核用來進行卷積的滑動窗口的步長,逐步調整。較大的步長意味著更細,更小的卷積特征。?
池化是從卷積層進行的采樣,可在較低維度上呈現(xiàn)主要特征,從而防止過度擬合并減輕計算需求。池化的兩種主要類型是平均池化和最大池化。提供一個核和一個步長,合并就相當于卷積,但取每幀的平均值或最大值。?
扁平化顧名思義,扁平只是將最后的卷積層轉換為一維神經網絡層。它為實際的預測奠定了基礎。
R語言實現(xiàn)
當我們將CNN(卷積神經網絡)模型用于訓練多維類型的數(shù)據(例如圖像)時,它們非常有用。我們還可以實現(xiàn)CNN模型進行回歸數(shù)據分析。我們之前使用Python進行CNN模型回歸?,在本視頻中,我們在R中實現(xiàn)相同的方法。
我們使用一維卷積函數(shù)來應用CNN模型。我們需要Keras R接口才能在R中使用Keras神經網絡API。如果開發(fā)環(huán)境中不可用,則需要先安裝。本教程涵蓋:
準備數(shù)據
定義和擬合模型
預測和可視化結果
源代碼
我們從加載本教程所需的庫開始。
library(keras) library(caret)
準備
數(shù)據在本教程中,我們將波士頓住房數(shù)據集用作目標回歸數(shù)據。首先,我們將加載數(shù)據集并將其分為訓練和測試集。
set.seed(123) boston?=?MASS::Boston indexes?=?createDataPartition(boston$medv,?p?=?.85,?list?=?F)train?=?boston\[indexes,\] test?=?boston\[-indexes,\]
接下來,我們將訓練數(shù)據和測試數(shù)據的x輸入和y輸出部分分開,并將它們轉換為矩陣類型。您可能知道,“ medv”是波士頓住房數(shù)據集中的y數(shù)據輸出,它是其中的最后一列。其余列是x輸入數(shù)據。
檢查維度。
dim(xtrain) \[1\]?432??13dim(ytrain) \[1\]?432???1
接下來,我們將通過添加另一維度來重新定義x輸入數(shù)據的形狀。
dim(xtrain) \[1\]?432??13???1dim(xtest) \[1\]?74?13??1
在這里,我們可以提取keras模型的輸入維。
print(in_dim) \[1\]?13??1
定義和擬合模型
我們定義Keras模型,添加一維卷積層。輸入形狀變?yōu)樯厦娑x的(13,1)。我們添加Flatten和Dense層,并使用“ Adam”優(yōu)化器對其進行編譯。
model?%>%?summary() \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ Layer?(type)????????????????????Output?Shape??????????????????Param?#???? ======================================================================== conv1d_2?(Conv1D)???????????????(None,?12,?64)????????????????192???????? \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ flatten_2?(Flatten)?????????????(None,?768)???????????????????0?????????? \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ dense_3?(Dense)?????????????????(None,?32)????????????????????24608?????? \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ dense_4?(Dense)?????????????????(None,?1)?????????????????????33????????? ======================================================================== Total?params:?24,833 Trainable?params:?24,833 Non-trainable?params:?0 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

接下來,我們將使用訓練數(shù)據對模型進行擬合。
print(scores) ????loss? 24.20518

點擊標題查閱往期內容

R語言KERAS深度學習CNN卷積神經網絡分類識別手寫數(shù)字圖像數(shù)據(MNIST)
左右滑動查看更多
01

02

03

04

預測和可視化結果
現(xiàn)在,我們可以使用訓練的模型來預測測試數(shù)據。
predict(xtest)
我們將通過RMSE指標檢查預測的準確性。
cat("RMSE:",?RMSE(ytest,?ypred)) RMSE:?4.935908
最后,我們將在圖表中可視化結果檢查誤差。
x_axes?=?seq(1:length(ypred)) lines(x_axes,?ypred,?col?=?"red",?type?=?"l",?lwd?=?2) legend("topl

在本教程中,我們簡要學習了如何使用R中的keras CNN模型擬合和預測回歸數(shù)據。

本文摘選《R語言實現(xiàn)CNN(卷積神經網絡)模型進行回歸數(shù)據分析》,點擊“閱讀原文”獲取全文完整資料。
點擊標題查閱往期內容
Python用LSTM長短期記憶神經網絡對不穩(wěn)定降雨量時間序列進行預測分析
深度學習實現(xiàn)自編碼器Autoencoder神經網絡異常檢測心電圖ECG時間序列
spss modeler用決策樹神經網絡預測ST的股票
Python中TensorFlow的長短期記憶神經網絡(LSTM)、指數(shù)移動平均法預測股票市場和可視化
RNN循環(huán)神經網絡 、LSTM長短期記憶網絡實現(xiàn)時間序列長期利率預測
結合新冠疫情COVID-19股票價格預測:ARIMA,KNN和神經網絡時間序列分析
深度學習:Keras使用神經網絡進行簡單文本分類分析新聞組數(shù)據
用PyTorch機器學習神經網絡分類預測銀行客戶流失模型
PYTHON用LSTM長短期記憶神經網絡的參數(shù)優(yōu)化方法預測時間序列洗發(fā)水銷售數(shù)據
Python用Keras神經網絡序列模型回歸擬合預測、準確度檢查和結果可視化
R語言深度學習卷積神經網絡 (CNN)對 CIFAR 圖像進行分類:訓練與結果評估可視化
深度學習:Keras使用神經網絡進行簡單文本分類分析新聞組數(shù)據
Python用LSTM長短期記憶神經網絡對不穩(wěn)定降雨量時間序列進行預測分析
R語言深度學習Keras循環(huán)神經網絡(RNN)模型預測多輸出變量時間序列
R語言KERAS用RNN、雙向RNNS遞歸神經網絡、LSTM分析預測溫度時間序列、 IMDB電影評分情感
Python用Keras神經網絡序列模型回歸擬合預測、準確度檢查和結果可視化
R語言中的神經網絡預測時間序列:多層感知器(MLP)和極限學習機(ELM)數(shù)據分析報告
R語言深度學習:用keras神經網絡回歸模型預測時間序列數(shù)據
Matlab用深度學習長短期記憶(LSTM)神經網絡對文本數(shù)據進行分類
R語言KERAS深度學習CNN卷積神經網絡分類識別手寫數(shù)字圖像數(shù)據(MNIST)
MATLAB中用BP神經網絡預測人體脂肪百分比數(shù)據
Python中用PyTorch機器學習神經網絡分類預測銀行客戶流失模型
R語言實現(xiàn)CNN(卷積神經網絡)模型進行回歸數(shù)據分析
SAS使用鳶尾花(iris)數(shù)據集訓練人工神經網絡(ANN)模型
【視頻】R語言實現(xiàn)CNN(卷積神經網絡)模型進行回歸數(shù)據分析
Python使用神經網絡進行簡單文本分類
R語言用神經網絡改進Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經網絡RNN的溫度時間序列預測
R語言神經網絡模型預測車輛數(shù)量時間序列
R語言中的BP神經網絡模型分析學生成績
matlab使用長短期記憶(LSTM)神經網絡對序列數(shù)據進行分類
R語言實現(xiàn)擬合神經網絡預測和結果可視化
用R語言實現(xiàn)神經網絡預測股票實例
使用PYTHON中KERAS的LSTM遞歸神經網絡進行時間序列預測
python用于NLP的seq2seq模型實例:用Keras實現(xiàn)神經網絡機器翻譯
用于NLP的Python:使用Keras的多標簽文本LSTM神經網絡分類