成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

獨家 | 教你在R中使用Keras和TensorFlow構建深度學習模型

人工智能 深度學習
隨著Keras在R中的實現,語言選擇的斗爭又重新回到舞臺中央。Python幾乎已經慢慢變成深度學習建模的默認語言,但是隨著在R中以TensorFlow(CPU和GPU均兼容)為后端的Keras框架的發行, 即便是在深度學習領域,R與Python搶占舞臺的戰爭也再一次打響。

[[197801]]

引言:

在R和Python之間如何進行選擇一直是一個熱議的話題。機器學習世界也被不同語言偏好所劃分。但是隨著深度學習的盛行,天平逐漸向Python傾斜,因為截至目前為止Python具有大量R所沒有的深度學習的資源庫和框架。

我個人從R轉到Python是因為我想更加深入機器學習的領域,而僅僅使用R的話,這(在之前)是幾乎不可能實現的事情。不過也僅此而已!

隨著Keras在R中的實現,語言選擇的斗爭又重新回到舞臺中央。Python幾乎已經慢慢變成深度學習建模的默認語言,但是隨著在R中以TensorFlow(CPU和GPU均兼容)為后端的Keras框架的發行, 即便是在深度學習領域,R與Python搶占舞臺的戰爭也再一次打響。

下面我們將會看到怎樣在R中安裝以TensorFlow為基礎的Keras框架,然后在RStudio中構建我們基于經典MNIST數據集的***個神經網絡模型。

內容列表:

  • 以TensorFlow為后端的Keras框架安裝
  • 在R中可以使用Keras來構建模型的不同類型
  • 在R中使用MLP將MNIST手寫數字進行歸類
  • 將MNIST結果與Python中同等代碼結果進行比較
  • 結語

一、以TensorFlow為后端的Keras框架安裝

在RStudio中安裝Keras的步驟非常簡單。只要跟著以下步驟,你就可以在R中構建你的***個神經網絡模型。

  1. install.packages("devtools"
  2.  
  3. devtools::install_github("rstudio/keras" 

以上步驟會從Github資源庫下載Keras。現在是時候把keras加載進R,然后安裝TensorFlow。

  1. library(keras) 

在默認情況下,RStudio會加載CPU版本的TensorFlow。如果沒有成功加載CPU版本的TensorFlow, 使用以下指令來下載。

  1. install_tensorflow() 

如要為單獨用戶或桌面系統安裝GPU支持的TensorFlow,使用以下指令。

  1. install_tensorflow(gpu=TRUE

為多重用戶安裝,請參考這個指南:https://tensorflow.rstudio.com/installation_gpu.html。

現在在我們的RStudio里,keras和TensorFlow都安裝完畢了。讓我們開始構建***個在R中的神經網絡來處理MNIST數據集吧。

二、在R中可以使用keras來構建模型的不同類型

以下是可以在R中使用Keras構建的模型列表

  1. 多層感知器(Multi-Layer Perceptrons)
  2. 卷積神經網絡(Convoluted Neural Networks)
  3. 遞歸神經網絡(Recurrent Neural Networks)
  4. Skip-Gram模型
  5. 使用預訓練的模型(比如VGG16、RESNET等)
  6. 微調預訓練的模型

讓我們從構建僅有一個隱藏層的簡單MLP模型開始,來試著對手寫數字進行歸類。

三、在R中使用MLP將MNIST手寫數字進行歸類

  1. #loading keras library 
  2.  
  3. library(keras) 
  4.  
  5. #loading the keras inbuilt mnist dataset 
  6.  
  7. data<-dataset_mnist() 
  8.  
  9. #separating train and test file 
  10.  
  11. train_x<-data$train$x 
  12.  
  13. train_y<-data$train$y 
  14.  
  15. test_x<-data$test$x 
  16.  
  17. test_y<-data$test$y 
  18.  
  19. rm(data) 
  20.  
  21. # converting a 2D array into a 1D array for feeding into the MLP and normalising the matrix 
  22.  
  23. train_x <- array(train_x, dim = c(dim(train_x)[1], prod(dim(train_x)[-1]))) / 255 
  24.  
  25. test_x <- array(test_x, dim = c(dim(test_x)[1], prod(dim(test_x)[-1]))) / 255 
  26.  
  27. #converting the target variable to once hot encoded vectors using keras inbuilt function 
  28.  
  29. train_y<-to_categorical(train_y,10) 
  30.  
  31. test_y<-to_categorical(test_y,10) 
  32.  
  33. #defining a keras sequential model 
  34.  
  35. model <- keras_model_sequential() 
  36.  
  37. #defining the model with 1 input layer[784 neurons], 1 hidden layer[784 neurons] with dropout rate 0.4 and 1 output layer[10 neurons] 
  38.  
  39. #i.e number of digits from 0 to 9 
  40.  
  41. model %>% 
  42.  
  43. layer_dense(units = 784, input_shape = 784) %>% 
  44.  
  45. layer_dropout(rate=0.4)%>% 
  46.  
  47. layer_activation(activation = 'relu') %>% 
  48.  
  49. layer_dense(units = 10) %>% 
  50.  
  51. layer_activation(activation = 'softmax'
  52.  
  53. #compiling the defined model with metric = accuracy and optimiser as adam. 
  54.  
  55. model %>% compile( 
  56.  
  57. loss = 'categorical_crossentropy'
  58.  
  59. optimizer = 'adam'
  60.  
  61. metrics = c('accuracy'
  62.  
  63.  
  64. #fitting the model on the training dataset 
  65.  
  66. model %>% fit(train_x, train_y, epochs = 100, batch_size = 128) 
  67.  
  68. #Evaluating model on the cross validation dataset 
  69.  
  70. loss_and_metrics <- model %>% evaluate(test_x, test_y, batch_size = 128)  

以上的代碼獲得了99.14%的訓練精度和96.89%的驗證精度。在我的i5處理器上跑這段代碼完整訓練一次用時13.5秒,而在TITANx GPU上,驗證精度可以達到98.44%,訓練一次平均用時2秒。

四、使用keras來構建MLP模型——R Vs. Python

為了更好地比較,我同樣使用Python來實現解決以上的MINIST歸類問題。結果不應當有任何差別,因為R會創建一個進程(conda instance)并在其中運行keras。但你仍然可以嘗試以下同等的Python代碼。

  1. #importing the required libraries for the MLP model 
  2.  
  3. import keras 
  4.  
  5. from keras.models import Sequential 
  6.  
  7. import numpy as np 
  8.  
  9. #loading the MNIST dataset from keras 
  10.  
  11. from keras.datasets import mnist 
  12.  
  13. (x_train, y_train), (x_test, y_test) = mnist.load_data() 
  14.  
  15. #reshaping the x_train, y_train, x_test and y_test to conform to MLP input and output dimensions 
  16.  
  17. x_train=np.reshape(x_train,(x_train.shape[0],-1))/255 
  18.  
  19. x_test=np.reshape(x_test,(x_test.shape[0],-1))/255 
  20.  
  21. import pandas as pd 
  22.  
  23. y_train=pd.get_dummies(y_train) 
  24.  
  25. y_test=pd.get_dummies(y_test) 
  26.  
  27. #performing one-hot encoding on target variables for train and test 
  28.  
  29. y_train=np.array(y_train) 
  30.  
  31. y_test=np.array(y_test) 
  32.  
  33. #defining model with one input layer[784 neurons], 1 hidden layer[784 neurons] with dropout rate 0.4 and 1 output layer [10 #neurons] 
  34.  
  35. model=Sequential() 
  36.  
  37. from keras.layers import Dense 
  38.  
  39. model.add(Dense(784, input_dim=784, activation='relu')) 
  40.  
  41. keras.layers.core.Dropout(rate=0.4) 
  42.  
  43. model.add(Dense(10,input_dim=784,activation='softmax')) 
  44.  
  45. # compiling model using adam optimiser and accuracy as metric 
  46.  
  47. model.compile(loss='categorical_crossentropy', optimizer="adam", metrics=['accuracy']) 
  48.  
  49. # fitting model and performing validation 
  50.  
  51. model.fit(x_train,y_train,epochs=50,batch_size=128,validation_data=(x_test,y_test))  

以上模型在同樣的GPU上達到了98.42%的驗證精度。所以,就像我們在一開始猜測的那樣,結果是相同的。

五、結語

如果這是你用R構建的***個深度學習模型,我希望你很享受這個過程。使用很簡單的代碼,你就可以對手寫數值進行精確度達到98%的分類。這應該可以給你足夠的動力讓你在機器學習的領域探索。

如果你已經在Python中使用過keras深度學習框架,那么你會發現R中keras框架的句式和結構跟其在Python中非常相似。事實上,R中的keras安裝包創造了一個conda環境而且安裝了在該環境下運行keras所需要的所有東西。但是,更讓我興奮的是:看到現在數據科學家們使用R構建有關現實生活的深度學習模型。就像有句話說的一樣,競爭永不停歇。 

責任編輯:龐桂玉 來源: THU數據派
相關推薦

2019-07-23 10:22:11

TensorFlow.Python機器學習

2023-05-14 22:35:24

TensorFlowKeras深度學習

2021-11-02 09:40:50

TensorFlow機器學習人工智能

2017-06-06 10:14:55

KerasTensorFlow深度學習

2009-06-16 09:06:37

JavaMailJSP

2017-08-16 10:57:52

深度學習TensorFlowNLP

2018-08-30 09:36:10

編程語言Python機器學習

2017-10-18 09:48:13

深度學習TensorFlow入門篇

2024-08-20 15:05:42

機器學習多任務多標簽模型

2022-06-29 09:00:00

前端圖像分類模型SQL

2016-12-06 08:51:48

深度學習TensorFlow機器學習

2018-10-15 10:08:53

程序員技能深度學習

2017-12-01 15:24:04

TensorFlow深度學習教程

2017-11-20 15:12:42

PythonTensorFlowWord2Vec

2017-09-18 17:34:53

深度學習學習框架Keras

2016-12-23 09:09:54

TensorFlowKubernetes框架

2017-08-10 15:31:57

Apache Spar TensorFlow

2018-03-20 15:33:05

深度學習加密貨幣

2021-02-03 13:56:09

KerasAPI深度學習

2017-07-07 14:41:13

機器學習神經網絡JavaScript
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清精品一区二区三区 | 伊人伊人伊人 | 每日更新av | 欧美黑人巨大videos精品 | 日韩影音 | av播播| 免费成人高清在线视频 | 亚洲精品91 | 国产高清视频一区二区 | 亚洲激情第一页 | 在线成人av | 精品免费国产一区二区三区 | 国产精品福利在线观看 | 一区二区三区四区av | 91国在线观看 | 人人叉 | 国产精品人人做人人爽 | 亚洲 欧美 在线 一区 | 色婷婷精品国产一区二区三区 | 久久精品天堂 | 超碰97免费观看 | 日本一区二区三区免费观看 | 天天干天天爽 | 久久激情五月丁香伊人 | 欧美日韩一区在线 | 国产精品伦理一区二区三区 | 久久久久中文字幕 | 韩日精品一区 | 欧美成ee人免费视频 | 97精品久久 | 久久综合欧美 | 久久国产区 | 亚洲欧美一区二区三区在线 | 日本电影韩国电影免费观看 | 国产亚洲精品a | 91免费高清视频 | 色又黄又爽网站www久久 | 日韩av免费在线观看 | 国产精品资源在线观看 | 日韩精品一区二区三区在线观看 | 亚洲精品一 |