我想知道是否有用于深度学习神经网络的良好R库?我知道还有的nnet
,neuralnet
以及RSNNS
,但没有这些似乎实现深度学习方法。
我对无监督学习,然后进行有监督学习,以及使用辍学防止共同适应特别感兴趣。
/ edit:几年后,我发现h20深度学习软件包设计精良且易于安装。我也喜欢mxnet软件包,该软件包安装起来有点困难,但支持像covnets这样的东西,可以在GPU上运行,而且速度非常快。
我想知道是否有用于深度学习神经网络的良好R库?我知道还有的nnet
,neuralnet
以及RSNNS
,但没有这些似乎实现深度学习方法。
我对无监督学习,然后进行有监督学习,以及使用辍学防止共同适应特别感兴趣。
/ edit:几年后,我发现h20深度学习软件包设计精良且易于安装。我也喜欢mxnet软件包,该软件包安装起来有点困难,但支持像covnets这样的东西,可以在GPU上运行,而且速度非常快。
Answers:
OpenSource h2o.deepLearning()是用于从h2o.ai在R中进行深度学习的软件包。与-h2o /
和代码:https : //gist.github.com/woobe/3e728e02f6cc03ab86d8#file-link_data-r
######## *Convert Breast Cancer data into H2O*
dat <- BreastCancer[, -1] # remove the ID column
dat_h2o <- as.h2o(localH2O, dat, key = 'dat')
######## *Import MNIST CSV as H2O*
dat_h2o <- h2o.importFile(localH2O, path = ".../mnist_train.csv")
######## *Using the DNN model for predictions*
h2o_yhat_test <- h2o.predict(model, test_h2o)
######## *Converting H2O format into data frame*
df_yhat_test <- as.data.frame(h2o_yhat_test)
######## Start a local cluster with 2GB RAM
library(h2o)
localH2O = h2o.init(ip = "localhost", port = 54321, startH2O = TRUE,
Xmx = '2g')
########Execute deeplearning
model <- h2o.deeplearning( x = 2:785, # column numbers for predictors
y = 1, # column number for label
data = train_h2o, # data in H2O format
activation = "TanhWithDropout", # or 'Tanh'
input_dropout_ratio = 0.2, # % of inputs dropout
hidden_dropout_ratios = c(0.5,0.5,0.5), # % for nodes dropout
balance_classes = TRUE,
hidden = c(50,50,50), # three layers of 50 nodes
epochs = 100) # max. no. of epochs
有一个名为“ darch”的软件包
http://cran.um.ac.ir/web/packages/darch/index.html
引用来自CRAN:
darch:用于深度架构和受限玻尔兹曼机器的软件包
darch软件包基于GE Hinton和RR Salakhutdinov的代码构建(可在Matlab代码下获得深层信任网:最后一次访问:2013年8月1日)。该软件包用于生成具有多个层(深度体系结构)的神经网络,并使用出版物“深度信念网络的快速学习算法”(GE Hinton,S。Osindero,YW Teh)和“降低维数”引入的方法对其进行训练。神经网络进行数据分析”(GE Hinton,RR Salakhutdinov)。此方法包括使用由GE Hinton(2002)发布的对比发散方法进行的预训练,以及使用诸如反向传播或共轭梯度之类的众所周知的训练算法进行的微调。
为了回答我自己的问题,我在R中为RBM编写了一个小程序包:https : //github.com/zachmayer/rbm
该软件包仍在大量开发中,我对RBM知之甚少,因此,我欢迎您提供任何反馈(并提出要求!)。您可以使用devtools安装软件包:
devtools:::install_github('zachmayer/rbm')
library(rbm)
?rbm
?rbm_gpu
?stacked_rbm
该代码类似于R中的Andrew Landgraf的实现和python中的Edwin Chen的实现,但是我编写的函数类似于基本R中的pca函数,并包含用于堆栈的功能。我认为它比darch包更具用户友好性,我永远无法弄清楚它的使用方式(甚至在将其从CRAN中删除之前)。
如果安装了gputools软件包,则可以通过rbm_gpu函数将GPU用于矩阵运算。这大大加快了速度!此外,RBM中的大多数工作都是通过矩阵运算完成的,因此仅安装良好的BLAS(例如openBLAS)也可以大大加快速度。
在Edwin的示例数据集上运行代码时,将发生以下情况:
set.seed(10)
print('Data from: https://github.com/echen/restricted-boltzmann-machines')
Alice <- c('Harry_Potter' = 1, Avatar = 1, 'LOTR3' = 1, Gladiator = 0, Titanic = 0, Glitter = 0) #Big SF/fantasy fan.
Bob <- c('Harry_Potter' = 1, Avatar = 0, 'LOTR3' = 1, Gladiator = 0, Titanic = 0, Glitter = 0) #SF/fantasy fan, but doesn't like Avatar.
Carol <- c('Harry_Potter' = 1, Avatar = 1, 'LOTR3' = 1, Gladiator = 0, Titanic = 0, Glitter = 0) #Big SF/fantasy fan.
David <- c('Harry_Potter' = 0, Avatar = 0, 'LOTR3' = 1, Gladiator = 1, Titanic = 1, Glitter = 0) #Big Oscar winners fan.
Eric <- c('Harry_Potter' = 0, Avatar = 0, 'LOTR3' = 1, Gladiator = 1, Titanic = 0, Glitter = 0) #Oscar winners fan, except for Titanic.
Fred <- c('Harry_Potter' = 0, Avatar = 0, 'LOTR3' = 1, Gladiator = 1, Titanic = 1, Glitter = 0) #Big Oscar winners fan.
dat <- rbind(Alice, Bob, Carol, David, Eric, Fred)
#Fit a PCA model and an RBM model
PCA <- prcomp(dat, retx=TRUE)
RBM <- rbm_gpu(dat, retx=TRUE, num_hidden=2)
#Examine the 2 models
round(PCA$rotation, 2) #PCA weights
round(RBM$rotation, 2) #RBM weights
propack.svd()
从svd
包装中尝试。
?rbm
。请注意,rbm是不受监督的。
您可以尝试H2O的深度学习模块,它是分布式的,并提供许多先进的技术,例如辍学正则化和自适应学习率。
幻灯片:http ://www.slideshare.net/0xdata/h2o-deeplearning-nextml视频:https://www.youtube.com/watch?v = gAKbAQu900w&feature = youtu.be
教程:http://learn.h2o.ai 数据和脚本:http://data.h2o.ai
文档:http : //docs.h2o.ai GitBooks:http : //gitbook.io/@h2o
要添加另一个答案:
mxnet很棒,我喜欢它 ,安装起来有点困难,但是它支持GPU和多个CPU。如果您打算在R中进行深度学习(尤其是在图像上),我强烈建议您从mxnet开始。
虽然我还没有遇到专门针对R的深度学习库,但是我在r-blogger上遇到了类似的讨论。讨论集中在使用RBM(受限玻尔兹曼机)上。看一下以下链接-
http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/(从“ alandgraf.blogspot.com”转发)
实际上,作者在R中封装了一个自我实现的算法确实做得非常好。必须说,我尚未审查代码的有效性,但至少在R中开始有深度学习的一瞥。
我希望这有帮助。
您现在还可以从R使用TensorFlow: