开始与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_traincnrow(x_train),784))x_test < -array_reshape(x_testcnrow(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_train10y_test < -to_categorical(y_test10

    定义模型

    Keras的核心数据结构是一个模型,一种组织层的方式。最简单的模型类型是顺序模型,层的线性堆叠。

    我们首先创建一个顺序模型,然后使用管道添加层(% > %)操作符:

    模型< -keras_model_sequential()模型% > %layer_dense单位=256激活=“relu”input_shape =c784))% > %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 =128validation_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翻译)。