大神带你分分钟超越最好结果——基于分布式CPU计算的Deeplearning4j迁移学习应用实例

  • 时间:
  • 浏览:1
  • 来源:大发5分快乐8_极速5分11选5

我觉得 准确率有所降低,并且使用基于现有Hadoop集群和商用CPU的简单宽度学习架构仍然打破了该数据集的最结果!我觉得 这并且都不 有一三个白 突破性的成就,但这仍然是有一三个白 令人兴奋的结果。

结论

    我觉得 deeplearning4j好多好多 我其他宽度学习可用的工具之一,但它具有本机Apache Spark集成,并且采用Java编写,使其一阵一阵适合整个Hadoop生态系统。并且现有的企业数据并且通过Hadoop进行了少许访问,并且在Spark上进行除理,好多好多 deeplearning4j的定位花费更少的时间部署和减少开销,从而企业公司还里能 立即结束了了英语 英文从宽度学习中提取数据。它利用ND4J进行少许计算,这是两种生活宽度优化的库,可与商用CPU配合使用,但在时需性能提升时也支持GPUDeeplearning4j提供了有一三个白 全功能的宽度学习库,具有从收集到部署的工具,可

用于各种任务,如图像/视频识别,音频除理等。 

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

           VGG16具有13个卷积层,后面 间隔放置最大池化层收缩图像,降低计算繁杂度。卷积层中的权重实际上是过滤器,还里能 学习从图像中选用出视觉行态,当使用最大池化层时,它们会收缩图像,这原困并且的卷积层中的滤波器实际上提取更加抽象的行态。另有一三个白 ,卷积层的输出是输入图像的抽象的视觉行态,如你你这个图像涵盖脸吗?还是有日落?卷积层的输出被馈送到连续的有一三个白 连接层,全连接层我不要 还里能 学习那些视觉行态与输出之间的非线性关系。

现在使用org.deeplearning4j.nn迁移学习包来提取全连接fc2层另有一三个白 (包括fc2层)的网络模型,如下图所示:垂线左边次责 

最后,通过spark提交训练工作,并且使用DL4J webui监控进度并诊断问提。下图绘制的是模型得分与迭代次数的关系,注意到分数是minibatch的负对数似然率,分数越小,效果越好 

首先,获取DL4J还里能 理解和使用的VGG16型号的版本。事实证明,你你这个东西是建立在DL4JAPI中的,它还里能 通过几行Scala代码完成

     本文介绍怎么才能 才能 使用Apache SparkApache Hadoopdeeplearning4j来除理图像分类问提。简单来说,好多好多 我通过构建有一三个白 卷积神经网络Caltech-256数据集中的图像进行分类。在Caltech-256数据集中,实际上有257个对象类别,每类数量最少 是3030个图像,该数据集总共30,307个图像。值得注意的是,该数据集上目前最先进的分类精度在72 - 75%范围内。下面我将带领我们都都歌词 儿使用DL4JSpark轻松超越结果 

该模型采用的格式易于DL4J使用,使用内置的模型进行检查

    该模型现在已准备好使用DL4J进行少许计算,并且还使用Spark进行规模化。简单来说是切分大规模的数据集,并且将分片交给spark群集中的每个工作核心上运行SGD,最后使用Spark RDD聚合操作对每个核心上学习的不同模型进行平均,实现分布式训练 

这次学习率模型似乎能比Imagenet模型能很快地学习,并且这次使用的行态ImageNet概率更具预测性。 

附件为原文的pdf

文章为简译,更为全部的内容,请查看原文

文章原标题《Deep learning on Apache Spark and Apache Hadoop with Deeplearning4j | Cloudera Engineering Blog》,作者:Nisha MuktewarSeth Hendrickson,译者:海棠,审阅:

更多宽度文章,请关注:https://yq.aliyun.com/cloud

替换VGG16的预测层

         VGG16模型是在ImageNet数据集上进行训练ImageNet数据集具有30种不同对象类别。在典型的图像分类神经网络中,输出层的最后一层使用其输入来为数据集中的每个对象生成概率(哪一类的概率大就判断为哪一类)。并且,该输入还里能 被认为是关于图像的抽象视觉行态,提供关于其涵盖的对象的有用信息。直观地说,上述步骤生成的新数据集于Caltech-256数据集中识别对象应该是有用的。并且,定义有一三个白 新的模型f2”层前的模型不变,好多好多 我替换VGG16模型的最后一层预测层将维度从另有一三个白 的30变成257正好对应Caltech256数据集257类别 

并且训练准确率88.8%,但验证准确率仅为76.3%,从结果上看该模型似乎并且过拟合了。为了确保模型我不要 过拟合到验证集在测试集上评估模型。 

Seth Hendrickson另有一三个白 是电气工程师,现在是数据科学家和软件工程师,研究方向是分布式机器学习。

作者信息

     接下来是读取数据库中的图像文件在你你这个情况表下,那些文件被单独保存到HDFS作为JPEG文件。图像被组织成子目录,其中每个子目录涵盖属于特定类的一组图像。首先通过使用sc.binaryFiles 加载存储在HDFS中的图像,并使用DataVec库(DL4JETL库)中的图像除理工具将它们转换为INDArrays,这是DL4J除理的本机张量表示(此处为全部代码)。最后,使用上图中的冻结网络次责对输入图像进行行态提取本质将它们传递VGG16模型中的预测层 

另外卷积网络的关键性质之一是允许我们都都歌词 儿进行迁移学习——还里能 通过并且训练好的VGG16网络传递新的图像数据,并获取每个图像的行态。一旦提取了那些行态只时需送人最后的预测网络就还里能 完成相应的任务,这在计算和繁杂度上都不 非常容易除理的问提。 

Nisha Muktewar数据科学家,目前就职于Cloudera的数据科学团队,专注于专业服务、售前工作。

      经过上述操作后,得到有一三个白 保存到HDFS中新的数据集。接下来还里能 结束了了英语 英文构建使用你你这个行态化数据的传输学习模型,从而大大减少训练时间和计算繁杂度。在上述示例中,得到的新数据30307个长度为4096的向量组成(这是并且VGG16模型中的全连接层“f2”维度为4096 

后面 代码显示VGG16网络的行态及参数ConvolutionLayer表示卷积层、SubsamplingLayer表示采样层、DenseLayer表示全连接层。下图简明扼要的展示了该网络行态:

小数据上的有效宽度学习

     目前,卷积网络还里能 有几亿个参数,比如大型视觉识别挑战 ImageNet中表现最佳的神经网络之一,有1.4亿个参数时需训练!那些网络不仅时需少许的计算和存储资源(即使使用一组GPU,也并且时需几周时间不还里能 完成计算),并且还时需少许数据。Caltech-256没有3000张图像,在你你这个数据集上训练另有一三个白 有一三个白 繁杂的模型是不现实的,并且没有足够的样本来充分学习没有多参数。相反,还里能 采用两种生活迁移学习的土土办法来实现。简单来说,好多好多 我将已学到的知识应用到其它领域,使其我不要 还里能 更好地完成新领域的学习这是并且卷积神经网络在对图像数据集进行训练时往往会学习非常普遍的行态,并且你你这个类型的行态学习通常对其他图像数据集也是通用的。类似于,在ImageNet上训练的网络并且并且针灸学会了怎么才能 才能 识别行态面部行态图案文本等,这无疑对于Caltech-256数据集是有用的。

加载预训练的模型

     下面讲解怎么才能 才能 使用训练好的模型来完成此人 的任务,以下示例使用VGG16 模型,该模型夺得了2014 ImageNet竞赛中的亚军(网络行态及训练好的参数已公开)。由使用不同的图像数据集,好多好多 时需对VGG16模型进行微小修改以适用于Caltech-256数据集预测任务。该模型具有约1.4亿个参数,最少 占用30 MB空间。 

现在针对具体的迭代次数训练SparkComputationGraph,并监控其他训练统计数据以跟踪进度。 

使用VGG16进行图像行态

     数据集还里能 从Caltech-256 网站下载,拆分为有一三个白 数据集,分别为训练/验证/测试数据集,并存储HDFS中。一旦完成该步骤,下一步整个图像数据集传递到网络的所有卷积层和第有一三个白 全连接层,并将该输出保存到HDFS

     样做的原困是是并且卷积网络中的大多数内存占用耗时计算都不 发生在卷积层中,VGG16中的大多数参数(权重)调用发生在全连接。迁移学习利用预先训练的卷积层来获取关于新输入图像的行态,这原困没有原始模型的一小次责——全连接层被重新训练。其余的参数是静态不变的。通过你你这个操作,迁移学习还里能 节省少许的训练时间和计算

首先提取用于行态化步骤的网络次责Deeplearning4j具有内置的迁移学习API可用于此任务拆分VGG16模型拆分另有一三个白 和另有一三个白 获取整个图层列表,代码如下 

直观图如下,还里能 想看 好多好多 我改变了预测层的维度: