开始与Keras
概述
Keras是一个高级的神经网络API,开发的重点是实现快速实验。能够在尽可能少的延迟下从想法到结果是做好研究的关键。Keras具有以下主要特征:
允许相同的代码在CPU或GPU上无缝运行。
友好的API,使它很容易快速原型深度学习模型。
内置支持卷积网络(卡塔尔世界杯欧洲预选赛赛程表用于计算机视觉),循环网络(用于序列处理),以及两者的任何组合。
卡塔尔世界杯欧洲预选赛赛程表支持任意网络架构:多输入或多输出模型、层共享、模型共享等。这意味着Keras基本上适用于构建任何深度学习模型,从记忆网络到神经图灵机。
这个网站提供了Keras的R接口的文档。查看Keras的主要网站https://keras.io有关该项目的更多信息。
安装
首先,安装keras R包:
install.packages(“keras”)
或安装开发版本:
devtools::install_github(“英格兰vs伊朗让球rstudio / keras”)
Keras R接口使用TensorFlow默认为后端引擎。
install.packages(“keras”)install_keras()
这将为你提供默认的基于cpu的Keras和TensorFlow安装。如果您想要一个更定制的安装,例如,如果您想利用NVIDIA gpu,请参阅相关文档install_keras ()
和安装部分。
MNIST例子
我们可以通过一个简单的例子来学习Keras的基础知识:识别来自MNIST数据集。MNIST由28 x 28灰度的手写数字图像组成,如下所示:
数据集还包括每个图像的标签,告诉我们这是哪个数字。例如,上面图片的标签是5、0、4和1。
准备数据
MNIST数据集包含在Keras中,可以使用dataset_mnist ()
函数。在这里,我们加载数据集,然后为测试和训练数据创建变量:
图书馆(keras)mnist < -dataset_mnist()x_train < -mnist$火车$xy_train < -mnist$火车$yx_test < -mnist$测验$xy_test < -mnist$测验$y
的x
数据是一个三维数组(图片、宽度、高度)
灰度值的。为了准备训练数据,我们将3-d阵列转换为矩阵,方法是将宽度和高度重构为单个维度(28x28图像被平化为长度为784的向量)。然后,我们将灰度值从0到255的整数转换为0到1的浮点值:
#重塑x_train < -array_reshape(x_trainc(nrow(x_train),784))x_test < -array_reshape(x_testc(nrow(x_test),784))#重新调节x_train < -x_train/255x_test < -x_test/255
注意,我们使用array_reshape ()
函数,而不是昏暗的< - ()
函数对数组进行重构。这样就可以使用行主语义(与R默认的列主语义相反)重新解释数据,这又与Keras调用的数字库解释数组维的方式兼容。
的y
数据为整数向量,取值范围为0 ~ 9。为培训准备这些数据在一个炎热的编码利用Keras将向量转化为二元类矩阵to_categorical ()
功能:
y_train < -to_categorical(y_train10)y_test < -to_categorical(y_test10)
定义模型
Keras的核心数据结构是一个模型,一种组织层的方式。最简单的模型类型是顺序模型,层的线性堆叠。
我们首先创建一个顺序模型,然后使用管道添加层(% > %
)操作符:
模型< -keras_model_sequential()模型% > %layer_dense(单位=256,激活=“relu”,input_shape =c(784))% > %layer_dropout(率=0.4)% > %layer_dense(单位=128,激活=“relu”)% > %layer_dropout(率=0.3)% > %layer_dense(单位=10,激活=“softmax”)
的input_shape
参数指定输入数据的形状(长度为784的数值向量表示灰度图像)。最后一层输出一个长度为10的数字向量(每个数字的概率)softmax激活函数.
使用总结()
函数打印模型的详细信息:
总结(模型)
模型 ________________________________________________________________________________ 输出层(类型)的形状参数 # ================================================================================ dense_1(致密)(200960,256) ________________________________________________________________________________ dropout_1(辍学)(没有,256)0 ________________________________________________________________________________ dense_2(致密)(没有,128) 32896 ________________________________________________________________________________ dropout_2(辍学)(没有,128)0 ________________________________________________________________________________ dense_3(致密)(没有,10)1290 ================================================================================ 总参数:235146可训练的参数:235146 Non-trainable参数:0 ________________________________________________________________________________
接下来,使用适当的损失函数、优化器和指标编译模型:
模型% > %编译(损失=“categorical_crossentropy”,优化器=optimizer_rmsprop(),指标=c(“准确性”))
培训和评估
使用符合()
函数对128幅图像进行30个epoch的训练:
< -历史模型% > %适合(x_train y_train,时代=30.,batch_size =128,validation_split =0.2)
的历史
返回的对象符合()
包括我们可以绘制的损失和精度指标:
情节(历史)
评估模型对测试数据的性能:
模型% > %评估(x_test y_test)
$loss [1] 0.1149 $acc [1] 0.9807
对新数据进行预测:
模型% > %predict_classes(x_test)
[1] 7 2 1 0 4 1 4 9 5 9 0 6 9 0 1 5 9 7 3 4 9 6 6 5 4 0 7 4 0 1 3 1 2 3 4 7 7 1 2[40] 1 1 7 4 2 5 1 2 3 4 5 6 3 5 6 0 4 1 9 5 6 7 8 9 3 7 4 4 0 7 0 2 1 9 7 3 2[79] 9 7 7 6 2 6 7 8 4 7 3 1 3 6 9 1 4 1 3 7 6 9[达到getOption(“max.print”)——省略9900个条目)
Keras为构建深度学习模型提供了一个简单、优雅和直观的词汇表。构建一个问答系统、一个图像分类模型、一个神经图灵机或任何其他模型都是很简单的。
深度学习与R书
如果您想更全面地介绍Keras以及深度学习的概念和实践,我们推荐基于R的深度学习本书从曼宁。这本书是Keras的创造者François Chollet和为Keras编写R界面的J.J. Allaire的合作。
这本书假设没有机器学习和深度学习的重要知识,并一路从基础理论到高级实际应用,都使用了R接口到Keras。
为什么叫这个名字,Keras?
Keras在希腊语中是“号角”的意思。它是一个来自古希腊和拉丁文学的文学形象的参考,最早在《奥德赛》中发现,梦的灵魂(Oneiroi,奇异的Oneiros)被分为两类,一类用虚假的幻象欺骗人们,通过象牙之门到达地球,另一类宣布未来将会到来,通过号角之门到达。这是一个玩字κέρας(角)/κραίνω(实现),和ἐλέφας(象牙色)/ἐλεφαίρομαι(欺骗)。
Keras最初是作为ONEIROS(开放式神经电子智能机器人操作系统)项目研究工作的一部分开发的。
“我们无法解释奥内莱——谁能确定它们讲述的是什么故事?并非所有人期待的都能实现。有两扇门可以让奥内莱通过;一个是角做的,一个是象牙做的。那穿锯过的象牙的奥内莱是诡诈的,所传的信息是不能应验的;那些用磨光的号角出来的,背后都有真理,只有看见它们的人才能成就。”荷马,奥德赛19。562 ff (Shewring翻译)。