您好,登錄后才能下訂單哦!
這篇文章主要為大家分析了R語言基于Keras的MLP神經網絡及環境怎么搭建的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“R語言基于Keras的MLP神經網絡及環境怎么搭建”的知識吧。
R語言是我使用的第一種計算機語言,也是目前的主流數據分析語言之一,常常被人與python相比較。在EDA,制圖和機器學習方面R語言擁有很多的的package可供選擇。但深度學習方面由于缺少學習庫以及合適的框架而被python趕超。但Keras在R語言上的發布使得兩種語言再次打成平手。
此文章使用Tensorflow以及Keras庫在R語言上進行了手寫數字識別,代碼部分源于《Getting started with Deep Learning using Keras and TensorFlow in R》,作者: NSS:https://www.analyticsvidhya.com/blog/2017/06/getting-started-with-deep-learning-using-keras-in-r/?spm=5176.100239.blogcont109827.13.QVuLG8 。對于新手來說這些代碼可能并不好理解,前面電腦配置部分的省略讓我走過了不少坑。此篇文章中我會對后臺的安裝以及代碼部分作詳解。
電腦型號:MacBook Air
系統: Windows 8.1 專業版 64位操作系統
處理器: Intel® Core™ i5-5250U CPU @ 1.60GHz
安裝內存(RAM): 8.0 GB
顯卡:HD 4000核芯顯卡
首先請安裝Python3.5或3.6。下載地址:https://www.python.org/getit/ 。目前最新的為3.7.1,但tensorflow win8版本目前只支持python3.5以及3.6。IOS或者LINUX可能支持2.x版本。我們用這個Python來安裝tensorflow。
本人安裝版本為Python3.6.7 64bit,安裝時顯示需要 C Runtime Update(KB2999226),即需要更新or安裝KB2999226補丁。如果你電腦沒有這個補丁的話去官網找到適合你計算機的版本下載更新就可以了。注意需要先安裝KB2919355才能后續安裝。
安裝時選擇把連帶的pip等都安裝上。之后在cmd里面輸入python即可查看版本。(作為電腦小白的我最開始并不知道cmd是個啥。。。其實就是ios系統里面的‘終端’, win系統里中文叫命令提示符)
C:\Users\user>python
之后需要官網下載 Visual C++2015 redistributable 來進行pip install tensorflow,下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=53587。
安裝完成之后cmd里輸入
C:\Users\user>pip install tensorflow
如果顯示無法訪問xxxxx就加上--user
C:\Users\user>pip install --user tensorflow
同理繼續安裝keras
C:\Users\user>pip install --user keras
現在一些安裝就緒,可以在cmd輸入以下代碼里查看是否安裝成,如果不顯示錯誤那就是安裝成功了~~
C:\Users\user>python
import tensorflow
import keras
接下來進入R語言部分!
如果之前有用過R的朋友請忽略這一段。
安裝R非常簡單,直接官網下載:https://mirrors.tuna.tsinghua.edu.cn/CRAN/
之后下載Rstudio,這個相當于R語言的開掛版,界面相比于R來說非常友好,輔助功能也很多,下載地址:https://www.rstudio.com/products/rstudio/download/
#注意Rstudio是基于R語言的,需要下載安裝R語言后才可以安裝使用。
此部分代碼源自:https://www.analyticsvidhya.com/blog/2017/06/getting-started-with-deep-learning-using-keras-in-r/?spm=5176.100239.blogcont109827.13.QVuLG8 。我添加了一些comments可供參考。
首先在RStudio中安裝Keras和tensorflow
install.packages("devtools") #安裝R的開發工具包 devtools::install_github("rstudio/keras") #從github下載keras到R install.packages("keras")#也可以直接下載CRAN的Keras包 #以上兩種安裝方法選其一就可以 library(keras) #加載keras包 install_tensorflow()#建立一個R語言的tensorflow環境,默認為CPU版本 install_tensorflow(gpu=TRUE) #如果想要自定義安裝,比如使用GPU,使用這行代碼
在配置好環境后我們開始神經網絡的搭建,使用dataset_mnist()數據集。MNIST數據集是60000個從0到9的十個手寫數字28x 28像素的灰度圖像組成,同時提供一個10000張圖像的測試集。
首先我們下載數據集,并為測試和訓練數據創造出變量。其中x為灰度值的3D數組(圖像、寬度、高度),y為數字0到9的整數分類向量。
#把訓練集,測試集分離并創造出變量 #此步驟在深度學習中非常常見,可以有效的防止數據欺詐,并且讓你的數據和步驟看起來更加清晰 train_x<-data$train$x train_y<-data$train$y test_x<-data$test$x test_y<-data$test$y rm(data) #這一步為移除原始數據。。。沒啥用
然后我們把x數據(灰度值)的3D數據中的寬度和高度通過array()轉換為一維(28x28的像素值變成長度為784的向量)使之轉化為矩陣形式。同時把0到255之間整數的灰度值轉換成0到1之間的數值。
train_x <- array(train_x, dim = c(dim(train_x)[1], prod(dim(train_x)[-1]))) / 255 test_x <- array(test_x, dim = c(dim(test_x)[1], prod(dim(test_x)[-1]))) / 255
之后再來看y數據 ,我們用 Keras包里面的to_categorical()函數,把之前的分類向量轉化為二進制類矩陣(binary class matrix)
train_y<-to_categorical(train_y,10) test_y<-to_categorical(test_y,10)
現在數據已經處理完畢了,我們可以開始建模。首先創建一個keras的序貫模型(sequential model),這是一個多個網絡層的線性堆疊,我們可以通過向Sequential模型傳遞一個layer的list來構造該模型。
model <- keras_model_sequential() #定義模型
添加并定義網絡的層
#原作者的代碼建立了一個輸入層(784個神經元),一個全連接層(784個神經元)以及一個輸出層(10個神經元) model %>% #全連接層,units代表輸出緯度,input_shape代表輸入張量的shape。 layer_dense(units = 784, input_shape = 784) %>% #隨機停止40%特征檢驗,用于提高模型泛化能力。 layer_dropout(rate=0.4)%>% #選取隱層激活函數RELU layer_activation(activation = 'relu') %>% #輸出層(一共10個數字,所以輸出緯度為10) layer_dense(units = 10) %>% #選取隱層激活函數RELU layer_activation(activation = 'softmax') summary(model) # 使用summary()查看模型細節
選擇損失函數、優化器和指標來編譯模型
model %>% compile( loss = 'categorical_crossentropy', #損失函數 optimizer = 'adam', #優化器 metrics = c('accuracy') #指標 )
訓練和評估模型
#使用fit()函數來訓練模型,epochs為100,batch_size為128 model %>% fit(train_x, train_y, epochs = 100, batch_size = 128) #通過測試數據評估模型表現 loss_and_metrics <- model %>% evaluate(test_x, test_y, batch_size = 128)
訓練模型時上述代碼直接繪制出每一步epoch下loss和acc的值,也可以定義模型,比如mymodel<-model,之后用plot(mymodel)查看繪制過程。
之后可以通過以下代碼查看預測訓練集的結果。
model %>% predict_classes(x_test)
我的電腦運行時間為12s/epoch,在測試集上的loss=0.1076, acc=0.9857。可以說是非常不錯的一個結果。
這篇文章主要為大家分析了R語言基于Keras的MLP神經網絡及環境怎么搭建的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“R語言基于Keras的MLP神經網絡及環境怎么搭建”的知識吧。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。