温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-01-11 11:59:05 来源:亿速云 阅读:250 作者:柒染 栏目:开发技术

这篇文章主要为大家分析了R语言基于Keras的MLP神经网络及环境怎么搭建的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“R语言基于Keras的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。可以说是非常不错的一个结果。

    这篇文章主要为大家分析了R语言基于Keras的MLP神经网络及环境怎么搭建的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“R语言基于Keras的MLP神经网络及环境怎么搭建”的知识吧。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI