首页 > > > R语言深度学习——他山之石(Keras来了)
很多人都在质疑,作为老牌的统计分析编辑语言到底能不能胜任深度学习这个新任务。不可否认,在“某度”上,R语言的深度学习资料确实不多,我想这主要是应用群体的关系。因此,我们开始搜索英文原始资料,希望能够搜罗到尽可能多的R语言深度学习解决方案(有朋友劝我,要不你换个编程语言?我说算了吧,以前用过C,学过VB,换过PB,也编过Matlab,年纪一把了,实在懒得再换语法了)。

下面我们开始言归正传,首先什么是Keras? Keras的中文文档是这么介绍的:
Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:
https://keras-cn.readthedocs.io/en/latest/
读到这里,我心中窃喜,呵呵,果断没必要学习Python了,能调用就好了啊。
要学习如何调用Keras,你可以在https://keras.rstudio.com/中找到非常详细的说明,当然是全英文的(做DA不会英语不行啊)。下面我们就以网站上的例子来讲解如何运用在R中运用Keras进行深度学习。
以下为个人理解版,要看原文的直接点击链接https://keras.rstudio.com/
步骤1 安装Keras包
install.packages("keras")
library(keras)
install_keras()这里的代码很好理解,安装和调用。最后一行install_keras()是默认安装keras功能,这种情况下默认安装的是tensorflow作为后端,具体如下
install_keras(method = c("virtualenv", "conda"), conda = "auto",
tensorflow = "default", extra_packages = NULL)此外,默认情况都是安装的CPU版本,当然,哪位土豪配置了NVIDIA® GPU,那么你就可以用下面的命令安装GPU版本。
install_keras(tensorflow = "gpu")MNIST算例:MNIST是非常著名的一个手写数字算例数据集,纠结细节的同学可以移步http://yann.lecun.com/exdb/mnist/,简单的来说,我们就是要运用深度学习方法来识别手写数字,比如:

步骤2 导入数据
mnist <- dataset_mnist() #导入mnist数据集
x_train <- mnist$train$x #训练集的自变量
y_train <- mnist$train$y #训练集的因变量
x_test <- mnist$test$x
y_test <- mnist$test$y步骤3 调整数据结构
#改变数据形状,矩阵转向量
dim(x_train) <- c(nrow(x_train), 784)
dim(x_test) <- c(nrow(x_test), 784)
# 归一化
x_train <- x_train / 255
x_test <- x_test / 255
#调整输出的形式(因变量)
y_train <- to_categorical(y_train, 10)
y_test <- to_categorical(y_test, 10)这些工作是为了满足模型输入的需求,其中to_categorical是将对应的分类转化为向量,例如
to_categorical(2, 4) 上述代码分类是2,从0开始,所以2是第3个。4表示总共4个分类,所以输出的结果是
> to_categorical(2, 4)
[,1] [,2] [,3] [,4]
[1,] 0 0 1 0步骤4 定义模型
model <- keras_model_sequential()
model %>%
layer_dense(units = 256, activation = 'relu', input_shape = c(784)) %>%
layer_dropout(rate = 0.4) %>%
layer_dense(units = 128, activation = 'relu') %>%
layer_dropout(rate = 0.3) %>%
layer_dense(units = 10, activation = 'softmax')这里的%>%表示向右传递的管道函数。
步骤5 设置优化项
model %>% compile(
loss = 'categorical_crossentropy',
optimizer = optimizer_rmsprop(),
metrics = c('accuracy')
)这里定义了损失、优化和度量方式。
步骤6 运行
history <- model %>% fit(
x_train, y_train,
epochs = 30, batch_size = 128,
validation_split = 0.2
)


到这里,我们的介绍就差不多了,这篇短文并不是深度学习的理论介绍,所以没有太多概念的说明。本文的用意只是抛砖引玉,希望有更多的R语言爱好者能够分享更多的R语言深度学习解决方案。
本文是R语言数据分析系列中的第2篇,我们将继续推出R语言语法、统计分析数据挖掘等一系列文章。你的点赞和关注使我们最大的动力。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3159596/ ,如需转载,请注明出处,否则将追究法律责任。