我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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。可以说是非常不错的一个结果。

总结和学习笔记

我并没有使用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神经网络内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录