原创翻译 | 在R中利用Keras和TensorFlow开始深入进修
简介
在R和Python之间举办选择一直是个有争议的话题。呆板进修世界被分别为偏幸一种语言而不是另一种语言。可是跟着深度进修的发作,这种均衡转向了Python,因为它有大量的深度进修库和框架。
我小我私家从R转向Python仅仅是因为我想深入的研究深度进修规模,但R无法做到。但此刻有了转机!
跟着 基于R的Keras库的宣布, 这场争斗又回到了中心。 Python 正在逐步的成为深度进修模子的事实语言。可是跟着 回收R基于tensorflow (CPU 和 GPU 兼容)的Keras 库的宣布, R将再次为领奖台而战Python 尤其在深度进修规模。
以下我们将展示如何安装R语言情况下的基于Tensorflow的 Keras 库,并回收RStudio,在经典的MNIST数据集上构建一个神经网络模子。
目次
安装基于tensorflow 的Keras库.
利用Keras构建差异范例的模子
利用 MLP 分类MNIST手写数字
同Python中的等效代码在MNIST执行功效做比拟
总结
1. 安装基于tensorflow的Keras库
在 RStudio 中安装 Keras 的步调很是简朴。 只要凭据以下步调,您就可以利用R语言构建你的第一个神经网络模子。
install.packages(“devtools”)
devtools::install_github(“rstudio/keras”)
以上步调将会从Github客栈安装keras 库. 此刻让我们 在R中加载keras 并安装 tensorflow。
library(keras)
默认环境下 RStudio 加载 CPU 版本的 tensorflow。以下呼吁可以下载 CPU版本的 tensorflow。
install_tensorflow()
安装GPU版本的 tensorflow , 执行以下呼吁:
nstall_tensorflow(gpu=TRUE)
对付多用户安装, 参考 安装指南。
此刻我们已经在RStudio内安装了 keras 和 tensorflow, 让我们开始在MNIST数据集上构建我们的第一个神经网络项目。
2. 利用Keras构建差异范例的模子
以下列表为R中利用Keras可以构建的模子。
多层感知器
卷积神经网络
递归神经网络
Skip-Gram 模子
利用诸如 VGG16, RESNET 等的预练习模子.
微调预练习模子.
让我们先从构建一个很是简朴的模子,利用一个埋没层分类手写数字。
3. 利用MLP分类 MNIST 手写数字
#加载 keras 库
library(keras)
#加载keras中 内置的 mnist 数据集
data<-dataset_mnist()
#疏散练习和测试文件
train_x<-data$train$x
train_y<-data$train$y
test_x<-data$test$x
test_y<-data$test$y
rm(data)
# converting a 2D array into a 1D array for feeding into the MLP and normalising the matrix
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
#converting the target variable to once hot encoded vectors using keras inbuilt function
train_y<-to_categorical(train_y,10)
test_y<-to_categorical(test_y,10)
#defining a keras sequential model
model <- keras_model_sequential()
#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]
#i.e number of digits from 0 to 9
model %>%
layer_dense(units = 784, input_shape = 784) %>%
layer_dropout(rate=0.4)%>%
layer_activation(activation = ‘relu’) %>%
layer_dense(units = 10) %>%
layer_activation(activation = ‘softmax’)
#compiling the defined model with metric = accuracy and optimiser as adam.
model %>% compile(
loss = ‘categorical_crossentropy’,
optimizer = ‘adam’,
metrics = c(‘accuracy’)
)
#fitting the model on the training dataset
model %>% fit(train_x, train_y, epochs = 100, batch_size = 128)
#Evaluating model on the cross validation dataset
loss_and_metrics <- model %>% evaluate(test_x, test_y, batch_size = 128)
以上代码可以到达 99.14 的练习精度和 96.89的检讨精度。 代码运行在我的 i5 处理惩罚器回收单线程运行13.5秒而在TITANx GPU上, 检讨精度为 98.44 平均耗费2秒。
4. MLP 利用 keras – R vs Python
为了举办较量, 我也在Python上实现了上述MNIST问题。 以下为等价的 python 代码。
#importing the required libraries for the MLP model
import keras
from keras.models import Sequential
import numpy as np
#loading the MNIST dataset from keras
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#reshaping the x_train, y_train, x_test and y_test to conform to MLP input and output dimensions
x_train=np.reshape(x_train,(x_train.shape[0],-1))/255
x_test=np.reshape(x_test,(x_test.shape[0],-1))/255
import pandas as pd
y_train=pd.get_dummies(y_train)
y_test=pd.get_dummies(y_test)
#performing one-hot encoding on target variables for train and test
y_train=np.array(y_train)
y_test=np.array(y_test)
#defining model with one input layer[784 neurons], 1 hidden layer[784 neurons] with dropout rate 0.4 and 1 output layer [10 #neurons]
model=Sequential()
from keras.layers import Dense
model.add(Dense(784, input_dim=784, activation=’relu’))
keras.layers.core.Dropout(rate=0.4)
model.add(Dense(10,input_dim=784,activation=’softmax’))
#p#分页标题#e#
# compiling model using adam optimiser and accuracy as metric
model.compile(loss=’categorical_crossentropy’, optimizer=”adam”, metrics=[‘accuracy’])
# fitting model and performing validation
model.fit(x_train,y_train,epochs=50,batch_size=128,validation_data=(x_test,y_test))
以上代码在沟通的GPU上可以获得98.42的检讨精度。因此 , 正如我们最初的揣摩, 功效沟通.
5. 总结
假如这是你在R中的第一个深度进修模子, 我但愿你会喜欢上它。 编写很是简朴的代码, 你就可以或许分类手写数字并到达98% 精确率。 这应该足以让你开始深度进修的念头。
假如你已经回收Python 在keras库长举办深度进修, 那么你将会发明R中的keras库的语法和布局要同Python中很是相似。事实上, R情况下的 keras 包会建设一个conda 情况,并安装运行keras所需的依赖库。可是,此刻我更欢快的是数据科学家回收R正构建真实糊口深度进修模子。事实上,竞争本不应遏制。我还想听听你对R这个新成长的观点,请随意评论。
英文原文:https://www.analyticsvidhya.com/blog/2017/06/getting-started-with-deep-learning-using-keras-in-r/