R语言基于Keras的MLP神经网络及环境搭建

目录
  • Intro
  • 环境搭建
    • 本机电脑配置
    • 安装TensorFlow以及Keras
    • 安装R以及Rstudio
  • 基于R语言的深度学习MLP
    • 在Rstudio中安装Tensorflow和Keras
    • MNIST数据集的预处理
    • 深度学习MLP模型
  • 总结和学习笔记

Intro

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核芯显卡

安装TensorFlow以及Keras

首先请安装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以及Rstudio

如果之前有用过R的朋友请忽略这一段。
安装R非常简单,直接官网下载:https://mirrors.tuna.tsinghua.edu.cn/CRAN/

之后下载Rstudio,这个相当于R语言的开挂版,界面相比于R来说非常友好,辅助功能也很多,下载地址:https://www.rstudio.com/products/rstudio/download/

#注意Rstudio是基于R语言的,需要下载安装R语言后才可以安装使用。

基于R语言的深度学习MLP

在Rstudio中安装Tensorflow和Keras

此部分代码源自: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,使用这行代码

MNIST数据集的预处理

在配置好环境后我们开始神经网络的搭建,使用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)

深度学习MLP模型

现在数据已经处理完毕了,我们可以开始建模。首先创建一个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。可以说是非常不错的一个结果。

总结和学习笔记

我并没有使用python去对比结果,但NSS的文章中有做对比,数据显示R与Python相比在各方面的差别都不大。虽然这只是一个简单的多层感知器,但是深度学习在R语言上的应用会由此展开,双方将再次与同一水平线上竞争。Keras与R语言的其他package的合并使用或许会为深度学习带来一些前所未有的体验。

此文章中有很多不足之处,我会继续学习并且持续更新。

欢迎一起讨论~

邮箱zhaotian151@126.com
转载请注出处
by zt

以下为一些参考资料:
快速开始序贯(Sequential)模型:https://keras-cn.readthedocs.io/en/latest/getting_started/sequential_model/

Keras各种layer的作用及用法:https://www.jianshu.com/p/86d667ee3c62

Getting started with Deep Learning using Keras and TensorFlow in R:https://www.analyticsvidhya.com/blog/2017/06/getting-started-with-deep-learning-using-keras-in-r/?spm=5176.100239.blogcont109827.13.QVuLG8

如何选择优化器optimizer https://www.jianshu.com/p/d99b83f4c1a6/

到此这篇关于R语言基于Keras的MLP神经网络的文章就介绍到这了,更多相关R语言Keras神经网络内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • R语言数据建模流程分析

    目录 Intro 项目背景 前期准备 数据描述 数据清洗 预分析及预处理 数值型数据 类别型数据 特征 Boruta算法 建模 模型对比 Intro 近期在整理数据分析流程,找到了之前写的一篇代码,分享给大家.这是我上学时候做的一个项目,当时由于经验不足产生了一些问题,这些问题会在之后一点一点给大家讨论,避免各位踩坑.本篇分享会带一些讲解,可能有些地方不够清楚,欢迎留言讨论. 本次除了分享之外也是对自己之前项目的一个复盘.还是使用R语言(毕竟是我钟爱的语言).Python的如果有需求之后会放别的

  • R语言基于Keras的MLP神经网络及环境搭建

    目录 Intro 环境搭建 本机电脑配置 安装TensorFlow以及Keras 安装R以及Rstudio 基于R语言的深度学习MLP 在Rstudio中安装Tensorflow和Keras MNIST数据集的预处理 深度学习MLP模型 总结和学习笔记 Intro R语言是我使用的第一种计算机语言,也是目前的主流数据分析语言之一,常常被人与python相比较.在EDA,制图和机器学习方面R语言拥有很多的的package可供选择.但深度学习方面由于缺少学习库以及合适的框架而被python赶超.但K

  • 基于Vue2的移动端开发环境搭建详解

    前言 vue2.0发布了,那么还在用vue1.x的你,是不是也有所心动呢?下面这篇文章就给大家详细介绍基于Vue2的移动端开发环境搭建的详细步骤,下面来一起看看吧. 一.vue-cli 首先还是介绍我们的脚手架工具,因为它能让我们省去大部分的配置时间,这里只给出简单步骤,保证你的命令顺利运行的前提是安装最新版本的 node 和 npm,这里不赘述升级流程 全局安装 vue-cli npm install vue-cli -g 借此也全局安装一个 webpack npm install webpa

  • 基于visual studio code + react 开发环境搭建过程

    开发环境 windows 开发工具 visual studio code node 安装和 npm windows 安装node 可以直接在 node官网直接下载直接当作普通软件安装即可. 安装完成可以在控制台中运行node测试是否安装成功 win + r 输入 cmd ,直接在终端输入node -v 输出版本号及已经成功安装. 目前新版本的node自带npm(npm 是随同 node 一起安装的包管理工具).这里安装好了 node并且测试安装成功之后,可以继续在控制台输入 npm -v 检查是

  • R语言版本升级完全攻略基于Ubuntu

    目录 1. 具体操作 2. 各种版本的 Ubuntu Ubuntu 14.04 Ubuntu 18.04 Ubuntu 20.04 3. 各种版本的 R R 3.6 R 3.4 参考 相信很多小伙伴在自己的 Ubuntu 上安装 R 时,刚开始的版本都非常低,那么如何对自动安装好的低版本的 R 进行升级呢?本篇博客将进行详细的介绍. 1. 具体操作 我们以 Ubuntu 16.04 为例.直接在命令行界面,输入如下命令,即可快速升级到4.0最新版本: sudo su echo "deb http

  • 基于R语言for循环的替换方案

    R语言中,for循环运行比较慢 for(i in 1:1000){ print(i^2) } 补充:R语言:for循环使用小结 基本结构展示: vals =c(5,6,7) for(v in vals){ print(v) } #即把大括号里的内容对vals里的每一个值都循环run一遍 实例展示: 1. paste() 命令是把几个字符连接起来 如paste("A","B","C",sep=" ")得到的就是"A B

  • 基于R语言赋值符号的区别说明

    R语言赋值可以用=或<-,一般都建议使用<-,那你知道这两个之间的区间吗?那你有没有见过'<-'和'='这种赋值方法吗?今天就来和大家聊聊这基本的赋值符号都有哪些区别. 首先我们来看看符号的优先级,和java,c这些编程语言的优先级类似.下面这些都取自R帮助文档,输入?Syntax即可查看,它是根据优先级从高到低排列的. :: ::: access variables in a namespace $ @ component / slot extraction [ [[ indexing

  • 基于R语言xlsx安装遇到的问题及解决方案

    1.java环境的安装,如果java安装的是64位使用R软件一定要是64位,如果使用32位会报错,版本一定要对应. 2.安装顺序要是install.packages("rJava") install.packages("xlsxjars") install.packages("xlsx") 3.如果之前不是安装2中那样的顺序安装,虽然rJava或者xlsxjars包都下载了,但是就是安装不上xlsx,这时候可以选择到R安装目录下的library中

  • 基于R语言 数据检验详解

    目录 1.W检验(Shapiro–Wilk(夏皮罗–威克尔)W统计量检验) 2.K检验(经验分布的Kolmogorov-Smirnov检验) 3.相关性检验: 4.T检验 5.正态总体方差检验 6.二项分布总体假设检验 7.Pearson拟合优度χ2检验 8.Fisher精确的独立检验: 9.McNemar检验: 10.秩相关检验 11.Wilcoxon秩检验 1. W检验(Shapiro–Wilk (夏皮罗–威克尔 ) W统计量检验) 目标:检验数据是否符合某正态分布,如:标准正态分布N(0,

  • 基于Keras中Conv1D和Conv2D的区别说明

    如有错误,欢迎斧正. 我的答案是,在Conv2D输入通道为1的情况下,二者是没有区别或者说是可以相互转化的.首先,二者调用的最后的代码都是后端代码(以TensorFlow为例,在tensorflow_backend.py里面可以找到): x = tf.nn.convolution( input=x, filter=kernel, dilation_rate=(dilation_rate,), strides=(strides,), padding=padding, data_format=tf_

随机推荐