R语⾔基于Keras的MLP神经⽹络及环境搭建
⽬录
Intro
环境搭建
本机电脑配置
安装TensorFlow以及Keras
安装R以及Rstudio
基于R语⾔的深度学习MLP
在Rstudio中安装Tensorflow和Keras
MNIST数据集的预处理
深度学习MLP模型
总结和学习笔记
Intro
R语⾔是我使⽤的第⼀种计算机语⾔,也是⽬前的主流数据分析语⾔之⼀,常常被⼈与python相⽐较。在EDA,制图和机器学习⽅⾯R语⾔拥有很多的的package可供选择。但深度学习⽅⾯由于缺少学习库以及合适的框架⽽被python赶超。但Keras在R 语⾔上的发布使得两种语⾔再次打成平⼿。
环境搭建
本机电脑配置
电脑型号:MacBook Air
系统: Windows 8.1 专业版 64位操作系统
处理器:Intel®Core™*******************
安装内存(RAM): 8.0 GB
显卡:HD 4000核芯显卡
安装TensorFlow以及Keras
本⼈安装版本为Python3.6.7 64bit,安装时显⽰需要 C Runtime Update(KB2999226),即需要更新or安装KB2999226补丁。如果你电脑没有这个补丁的话去官⽹到适合你计算机的版本下载更新就可以了。注意需要先安装KB2919355才能后续安装。
安装时选择把连带的pip等都安装上。之后在cmd⾥⾯输⼊python即可查看版本。(作为电脑⼩⽩的我最开始并不知道cmd是个啥。。。其实就是ios系统⾥⾯的‘终端’, win系统⾥中⽂叫命令提⽰符)
C:\Users\user>python
安装完成之后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
#注意Rstudio是基于R语⾔的,需要下载安装R语⾔后才可以安装使⽤。
基于R语⾔的深度学习MLP
在Rstudio中安装Tensorflow和Keras
⾸先在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)tensorflow版本选择
我的电脑运⾏时间为12s/epoch,在测试集上的loss=0.1076, acc=0.9857。可以说是⾮常不错的⼀个结果。
总结和学习笔记
我并没有使⽤python去对⽐结果,但NSS的⽂章中有做对⽐,数据显⽰R与Python相⽐在各⽅⾯的差别都不⼤。虽然这只是⼀个简单的多层感知器,但是深度学习在R语⾔上的应⽤会由此展开,双⽅将再次与同⼀⽔平线上竞争。Keras与R语⾔的其他package的合并使⽤或许会为深度学习带来⼀些前所未有的体验。
此⽂章中有很多不⾜之处,我会继续学习并且持续更新。
欢迎⼀起讨论~
邮箱*******************
转载请注出处
by zt
到此这篇关于R语⾔基于Keras的MLP神经⽹络的⽂章就介绍到这了,更多相关R语⾔Keras神经⽹络内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论