ITPub博客

首页 > > > R语言深度学习——他山之石(Keras来了)

R语言深度学习——他山之石(Keras来了)

作者:浪花小雨滴 时间:2020-06-16 16:18:04 0 删除 编辑

前言

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

Keras简介



下面我们开始言归正传,首先什么是Keras? Keras的中文文档是这么介绍的:

Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:

  • 简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)
  • 支持CNN和RNN,或二者的结合
  • 无缝CPU和GPU切换

keras-cn.readthedocs.io

读到这里,我心中窃喜,呵呵,果断没必要学习Python了,能调用就好了啊。




如何在R中调用Keras

要学习如何调用Keras,你可以在keras.rstudio.com/中找到非常详细的说明,当然是全英文的(做DA不会英语不行啊)。下面我们就以网站上的例子来讲解如何运用在R中运用Keras进行深度学习。

以下为个人理解版,要看原文的直接点击链接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是非常著名的一个手写数字算例数据集,纠结细节的同学可以移步yann.lecun.com/exdb/mni,简单的来说,我们就是要运用深度学习方法来识别手写数字,比如:



步骤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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39888