我的机器学习-part(2020-1)【有监督/无监督、Spark+BigDL】

深度学习:基本概要:监督,无监督,半监督,弱监督,多示例,迁移学习 参考:https://blog.youkuaiyun.com/limiyudianzi/article/details/78921450 什么是监督学习、无监督学习、强化学习、弱监督学习、半监督学习、多示例学习? 随着机器学习问题不断深入人心,人们也将现实中遇到不同的问题分为不同的学习方式,其中,最基础的应属监督学习,无监督学习和强化学习了。 监督学习(supervised learning):已知数据和... 阅读详情


大家一辈子都在找规律,找诀窍:找工作的规律、找赚钱的规律、找恋爱诀窍…为了生活的美好。

所谓机器学习,就是设计代码让机器从数据中帮我们找规律。

1.整体记忆

个人理解,抛砖引玉,希望通俗,会不那么严谨。

1.1 类别

大致分为有监督学习(给定标签训练,对无标签数据进行预测打上标签,分类、回归)、无监督学习(给无标签数据,找内在结构,聚类、降维)、强化学习(学习如何选择一系列行动,以最大化长期收益)这3路。

1.2 有监督/无监督

有监督和无监督:以学英语为例。有监督学习就是看中英对照文字,时间长了可以看纯英文,你会自己理解到意思。无监督学习是直接看纯英文文章,虽然不能完全理解文章的含义,积累一定量之后,也会发现一些词组、句式的固定搭配等。

以分类为例来看,目前,有监督学习的效果还是不错的,相对来讲,无监督学习比如聚类就差一些,从上述例子就可以看出来,有答案不断给你纠错和没答案的摸索最终的结果会有所差距。不过无监督的降维等信息压缩还是用处显著的。

但是有监督学习有个致命的缺陷,标注数据的成本可能会比较高,所以一般是有监督夹杂无监督一起使用。比如100w样本全部人工标注比较难,可以随机标准1w个,整体聚类,然后根据1w个在各个簇的表现进行粗标注。

1.3 有监督:回归/分类

有监督就是对一系列样本 ( x , y ) (x, y) (x,y)构建 f ( x ) → y , x ∈ A , y ∈ B f(x)\rightarrow y,x\in A,y\in B f(x)→y,x∈A,y∈B。

(分类和回归的区别上,以下知乎上找的回答,表述的很清楚,符合我实际经历中的抽象问题的感觉,直接引用了:分类与回归区别是什么? - 陶韬的回答 - 知乎
https://www.zhihu.com/question/21329754/answer/204957456)

回归与分类的根本区别在于输出空间是否为一个度量空间:

对于回归问题,其输出空间 B B B是一个度量空间,即所谓“定量”。也就是说,回归问题的输出空间定义了一个度量 去衡量输出值与真实值之间的“误差大小”。例如:预测一瓶700毫升的可乐的价格(真实价格为5元)为6元时,误差为1;预测其为7元时,误差为2。这两个预测结果是不一样的,是有度量定义来衡量这种“不一样”的(于是有了均方误差这类误差函数)。

对于分类问题,其输出空间 B B B不是度量空间,即所谓“定性”。也就是说,在分类问题中,只有分类“正确”与“错误”之分,没有这个大小的区别,至于错误时是将Class 5分到Class 6,还是Class 7,并没有区别,都是在error counter上+1。

本质上,都是feature与label的映射。 实际问题建模的时候,就根据label的是否可度量来做回归还是分类。

生活和生产中大部分问题,其实都可以看做一个分类/回归问题。冥冥之中,我们用的最多:比如成功的人有哪些特点、失败的人有哪些缺点,我们学优点改缺点;比如哪些行为讨妹纸喜欢、哪些让人讨厌,学好不学坏;比如根据这个人收入水平、按时还款比例来预测违约的可能性有多大等等。

1.4 无监督学习

主要是两个东西:一个是聚类,一个是以主成分分析、Autoencoder等为代表的信息压缩。其实聚类的簇信息,也算是信息压缩的一种表达吧?

这里引用一下另一个同学的回答,对他的观点甚是同意。什么是无监督学习? - 微调的回答 - 知乎
https://www.zhihu.com/question/23194489/answer/913424307
在这里插入图片描述
有监督和无监督的中间数据,都是对初始特征的加工、提炼、压缩,区别就是是否有一个label来进行适应和反馈。

用VGG、ResNet利用ImageNet数据集有监督学习训练的模型,去做图片的encode,中间层不就是信息提取、压缩么。

聚类算法及在大数据上的实践之前有过一些:

比如spark上面的K-means其实是K-means++,距离计算层面做了一些优化(重复计算的中间值存储、判断距离大小的不等式简化计算),也有他的不足:
大数据量的时候有点凉,这时候就要设计mini-batch版本的K-means;
初始点不支持自己定义(半监督学习的味道),就需要自己动手了;
仅支持欧式距离,自定义距离度量目测就得改源代码了…

另外,实践中有一些不得不考量的问题:
簇的选择、数据是否归一化、初始点的选择、距离度量方式的选择等;
K-means还是密度聚类、谱聚类/图聚类这种;
大数据背景下不同聚类方法复杂度(时间、空间)效率考量…

后续开一个博客补上这一块的感受,解决实际问题的时候,效率、操作、效果都不是书面上的那么简单。

1.5 强化学习

纸上得来终觉浅,绝知此事要躬行…等我实践几下project再来补上这一块的小结。

2.实际生产中的感觉

2.1 问题抽象

项目的实际问题是什么,需不需要转化为机器学习问题,分类、回归、信息压缩?

是不是有其他简单办法就可以解决?

适合机器学习问题解决,是分类还是回归?

这个 y y y到底是啥,有些项目中这个 y y y比较明显,有些项目中则需要你去从业务逻辑中去挖掘,比如是预测用户购买某个产品的概率大小还是购买能力的衡量,哪一个和实际问题更加接近。

正负样本的构建中,样本不足时,哪些是业务意义上的相近样本,来扩充正、负,而不是简单的上采样、下采样。比如对于续费意愿来说,续费的是正,不续费的是负,那么续费金额大、时间长的和其他续费用户的label需要做出差异么;未购买,但是反复切换到续费页面的是不是label上也做些处理;不续费的里面,投诉或者明显负反馈的label是不是作出差异更好?

评价标准是啥,这个业务是侧重准确还是召回,他们对应的实际影响是啥,最重要的目标是什么。

怎么去验证,回测、开A/B实验、抽样评估?

2.2 特征工程

现在高级的模型有强大的选择能力、非线性组合能力。

个人感觉,在深度模型大数据的背景下,特征工程的意义发生了变化:原来的特征组合、选择这部分功能,可以用模型来承担,现在更大的作用引入增量信息和人工经验

比如城市名称可能直接用是一个不重要的特征,但是转化为一线、二线等城市等级数值,变相加入城市的经济水平等信息;手机号是一个不重要的特征,但是转化为是否靓号,可能就更有效。

2.3 模型选择和优化

最近做的少了,简而言之,复杂的模型效果更好,代价就是计算力,**效率始终是实际生产时不得不考虑的东西。**此处不展开先,最近的关注点没在这上面。

3.常用框架与我的实际经历

3.1 tensorflow/torch/paddle等

没啥多说的啦,毕竟我这种菜鸡都见了不少。
我记得我最开始的写的torch还是用Lua写的,后来有了pytorch,方便不少。
基于cpu、gpu的训练也都是遍地教程进阶。

训练、预测都不是问题。比较蛋疼的是DeepLearning与大规模ETL的结合,举个例子,在实际的spark etl任务里加入图像resnet分类、bert语义分类等。

之前的做法是拆开来,resnet、bert等涉及到深度学习部分就写python,用GPU服务器/mpi集群预测;剩余的部分就是scala代码在spark上面跑。
ETL由一套python代码+一套scala代码构成,两个环境,两个子任务阶段,用起来不太舒适
虽说有tensorflow on spark、spark torch,但是pyspark目前这个性能,以及上面tf、torch的支持情况,emmm…再等等看?

有这种难受的应该不止我一个,要是能用一套scala写个pipline多香啊,intel家的bigDL能缓解这种不舒服,目前用到了这一款。

3.2 spark.ml

自带的机器学习库,常规的分类、回归、聚类等都还行。

模型大了好像训练有问题,我记得之前训练文本分类lr,如果模型太大,确实会跑得慢,也会容易挂,内存罩不住。

拆开来看:

效率方面,treeAggregate 聚合梯度时,如果模型维度达到亿级,每个梯度向量都可能达到几百兆;此时 treeAggregate 的 shuffle 的效率非常低。

资源方面,记得内存要求也很大,以L-BFGS为例,每轮迭代,driver 都需要和 executor 完成高维度向量的 aggregate 和 broadcast;two-loop recursion 算法是由 driver 单点执行,该过程是多个高维度的向量的运算;将最近 m 轮生成的 { y k } \{y_k\} {yk​} 和 { s k } \{s_k\} {sk​} 序列存在driver。

然后这方面,有Spark on Angel 解决这个问题(https://cloud.tencent.com/developer/article/1005581),引入 PS 的角色,把two-loop recursion 算法的运算交给 PS,而 driver 只负责任务的调度,大大减轻的对 driver 性能的依赖,腾讯家的,貌似,算是工程上的优化。

没亲身用过,有听说周围有人用。

3.3 spark+bigDL(这次主要记录这个)

bigDL,官方链接在此:1.https://software.intel.com/content/www/cn/zh/develop/articles/bigdl-distributed-deep-learning-on-apache-spark.html,
2.https://bigdl-project.github.io/,
3.https://github.com/intel-analytics/BigDL
(下面截图来自于官网)

最舒适的地方就是,将DL模型舒适的放在spark运行的数据ETL里面, 刚实践了一阵,感受一下,快乐就完事儿:

package com.intel.analytics.bigdl.models.resnet

import java.nio.ByteBuffer
import com.intel.analytics.bigdl.dataset.DataSetWj.SeqFileFolder.readLabel
import com.intel.analytics.bigdl.transform.vision.image.{BytesToMat, DistributedImageFrame, ImageFeature, ImageFrame, ImageFrameToSample, MatToTensor}
import com.intel.analytics.bigdl.utils.{Engine, T}
import org.apache.hadoop.io.Text
import org.apache.spark.sql.{DataFrame, SQLContext, SparkSession}
import com.intel.analytics.bigdl.nn.{BatchNormalization, Container, CrossEntropyCriterion, MSECriterion, Module}
import com.intel.analytics.bigdl.dataset.Sample
import com.intel.analytics.bigdl.dlframes.{DLClassifierModel, DLModel}
import com.intel.analytics.bigdl.transform.vision.image.augmentation.{CenterCrop, ChannelNormalize, Resize}
import com.intel.analytics.bigdl.transform.vision.image.opencv.OpenCVMat
import org.apache.spark.rdd.RDD
import com.intel.analytics.bigdl.tensor.Tensor
import org.apache.spark.sql.functions._

object Test_PredictCaffee {

  def main(args: Array[String]): Unit = {

    val spark = SparkSession.builder().getOrCreate()
    import spark.implicits._

    //load caffee模型
    val model_pretrained = Module.loadCaffeModel[Float]("xxxxxx/resnext50_deploy.prototxt",
      "xxxx/resnext50.caffemodel")

    Engine.init//设置并发,batchsize

    val valid_seq_path = "hdfs://xxx/val"

    //加载opencv库
    nu.pattern.OpenCV.loadShared()

    //图像的SequenceFile读取,生成RDD[ImageFeature]
    def imageSeq2tensor(path: String): RDD[ImageFeature] = {
      //.sequenceFile 可以传入partition参数
      val rawData_0 = spark.sparkContext.sequenceFile(path, classOf[Text], classOf[Text]).
        map(image => {
          val rawBytes = image._2.copyBytes()

          val label = 0.0f //readLabel(image._1, 0).toFloat//readLabel(image._1, 0).toFloat //0.0f   //图片name分割还原后第1个字段
          val uri = image._1.toString//readLabel(image._1, 1)//readLabel(image._1, 1) //image._1.toString    // 图片name分割还原后第2个字段
          val imgBuffer = ByteBuffer.wrap(rawBytes)
          val width = imgBuffer.getInt
          val height = imgBuffer.getInt
          val bytes = new Array[Byte](3 * width * height)
          System.arraycopy(imgBuffer.array(), 8, bytes, 0, bytes.length)
          val imf = ImageFeature(bytes, label, uri)
          val bytes_f = bytes.map(x => (x & 0xFF).toFloat)
          val mat_0 = OpenCVMat.fromFloats(bytes_f, 256, 256, 3) //.fromImageBytes(bytes)
          //var mat_1:OpenCVMat = mat_0  //var mat_2:OpenCVMat = mat_0  //Imgproc.resize(mat_1, mat_2, new Size(224, 224))//先省略CenterCrop
          //ChannelNormalize.transform(mat_2, mat_2, Array(123, 117, 104), Array(1, 1, 1)) //val data = new Array[Float](224 * 224 * 3) //OpenCVMat.toFloatPixels(mat_2, data)
          imf(ImageFeature.mat) = mat_0
          imf(ImageFeature.originalSize) = (height, width, 3)
          imf
        })
      rawData_0
    }//val tt = rawData.first() //tt.getLabel[Float] //tt.uri  //tt.bytes

    //读取valid数据,RDD[ImageFeature] => ImageFrame的分布式类
    val rawData_1 = imageSeq2tensor(valid_seq_path)
    val rawData_ImageFrame = ImageFrame.rdd(rawData_1)//类型转为分布式的ImageFrame,可用toDistributed.rdd转回来

    //预测方式1,dataframe模式,还没细看源码,还有些问题需要解决,这里的batchsize设置后会咋样,先搞定方式2吧
    //    val model = Module.
    //      loadCaffeModel[Float]("xxx/resnext50_deploy.prototxt",
    //        "xxxl/resnext50.caffemodel")
    //val imageFrame: ImageFrame = ImageFrame.read(path, sqlContext.sparkContext)
    //val images_cifar = spark.sparkContext.binaryFiles("hdfs://xxxx/data_batch_1.bin").
    //   map { case (p, stream) => ImageFeature(stream.toArray(), uri = p)}
    //val images_cifar_mat = ImageFrame.rdd(images_cifar) -> BytesToMat()
    //val imageFrame: ImageFrame = rawData_ImageFrame -> BytesToMat()//Resize(256, 256) ->
    val transformer = Resize(256, 256) -> CenterCrop(224, 224) -> ChannelNormalize(123.68f, 116.779f, 103.939f, 255f, 255f, 255f) -> MatToTensor[Float]() -> ImageFrameToSample[Float]()//4.8253f, -7.25567f, -14.21365f, 73.639f, 73.2976f, 59.635f
    //val transformer = Resize(256, 256) -> CenterCrop(224, 224) -> ChannelNormalize(-24.061f, -11.22f, -4.32f, 255f, 255f, 255f) -> MatToTensor[Float]() -> ImageFrameToSample[Float]()
    val transformed: ImageFrame = transformer(rawData_ImageFrame)
//    val imageRDD = transformed.toDistributed().rdd.map { im =>
//        (im.uri, im[Sample[Float]](ImageFeature.sample).getData())//im.getLabel[Float]
//      }
//    val imagesDF = imageRDD.toDF("imageName", "features")
//    Engine.init
//    imagesDF.show(10)
//    imagesDF.printSchema()
//    val dlmodel: DLModel[Float] = new DLClassifierModel[Float](
//      model, Array(3, 224, 224)).setBatchSize(300).setFeaturesCol("features").setPredictionCol("prediction")
//    val count = imagesDF.count().toInt
//    val tranDF = dlmodel.transform(imagesDF.limit(count))
//    tranDF.select("imageName", "prediction").show(100, false)

    //val num = partitionNum.getOrElse(Engine.nodeNumber() * Engine.coreNumber())
    //预测方式2,rdd结构,现在已经ok,确实速度上还可以
    val result = model_pretrained.predictImage(transformed)
    val result_parse = result.toDistributed().rdd
    val result_parse_df = result_parse.map(img =>{
      val uri = img.uri
      val label = img.getLabel[Float]
      val pred_value = img.predict().toString.split("\n")(0).toFloat//.toFloat//first()[Tensor[Float]]("predict")
      val diff = (label-pred_value)*(label-pred_value)
      (uri, label, pred_value,diff)
    }).toDF("uri", "label", "pred_value", "diff")
  }
}

pom主要添加一下这俩,其他的缺啥类报错补啥…

<dependency>
    <groupId>com.intel.analytics.bigdl</groupId>
    <artifactId>bigdl-SPARK_2.4</artifactId>
    <version>0.11.0</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-lang3</artifactId>
            <groupId>org.apache.commons</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-collections</artifactId>
            <groupId>commons-collections</groupId>
        </exclusion>
        <exclusion>
            <artifactId>plexus-utils</artifactId>
            <groupId>org.codehaus.plexus</groupId>
        </exclusion>
        <exclusion>
            <artifactId>breeze_2.11</artifactId>
            <groupId>org.scalanlp</groupId>
        </exclusion>
        <exclusion>
            <artifactId>javax.servlet-api</artifactId>
            <groupId>javax.servlet</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>org.openpnp</groupId>
    <artifactId>opencv</artifactId>
    <version>3.2.0-1</version>
</dependency>

4.结语

文不对题,谅解。

岁月将自己的见识浅薄、自负、心态急躁的轮廓勾勒的更加明显,也给开了一扇光亮的窗,看到自己心底的善念和坚强;
也许生活有很多挫折,社会亦很残酷,让人时不时有点厌世的灰暗,但也有很多感动与美好,激情与悠扬;
既然活着,便努力去活,认真去过。

回到正题,后面会看看写聚类/强化学习相关吧,说不准。

告别简陋行情!在Ubuntu24.04系统用Wine9.0跑同花顺远航版的全流程记录 本文详细记录了在Ubuntu 24.04系统上,通过Wine 9.0兼容层成功安装并流畅运行同花顺远航版的全过程。文章对比了该方案与官方简陋Linux原生版本的功能差异,重点解决了高分辨率屏幕下的字体与界面显示问题,并提供了关键配置调优与长期维护建议,为Linux用户提供了功能完备的专业金融行情解决方案。 阅读详情

相关推荐

【FPGA】DDR3调试总结

DDR3管脚根据不同的功能可以分为:数据组、地址组、控制组和电源组。如图上所示,共96个管脚。

m0_51679724的博客 4967

Spark上的深度学习框架BigDL 介绍

网址:https://github.com/intel-analytics/BigDL BigDL: Distributed Deep Learning Library for Apache Spark https://bigdl-project.github.io/ BigDL是基于Apache Spark的分布式深度学习框架,借助现有的Spark集群来运行深度学习计

图特摩斯科技-博客 3733

「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

软件成分分析(Software Composition Analysis,SCA)是一种用于识别和分析软件内部组件及其关系的技术,旨在帮助开发人员更好地了解和管理其软件的构建过程,同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展与软件行业的快速发展密不可分,下面将介绍SCA的发展背景、技术原理以及当前主流SCA工具。

所有成功的背后,都是痛苦的坚持,所有的痛苦,都是傻瓜般的不放弃! 5630

spark-BigDl:深度学习之神经网络编写

BigDl主要实现了各种深度学习神经网络算法,当然也可以构建简单的神经网络。   一、下载依赖包和初始化系统 1.第一步是下载适合本地spark版本的 https://github.com/intel-analytics/BigDL/wiki/Downloads 2.把上述步骤的解压包在linux上解压后,在spark中初始化,运行其bin/bigdl.sh。运行命令为:

qq_30232405的博客 3093

SAP ABAP开发避坑:BAPI_MATVAL_PRICE_CHANGE调用报‘估价未维护’的完整解决流程

本文深入解析SAP ABAP开发中调用BAPI_MATVAL_PRICE_CHANGE函数时遇到的'估价未维护'错误,提供从基础配置检查到CKML_PRICE_SEND表维护的完整解决方案。通过实战案例和代码示例,帮助开发者快速定位问题并实现批量价格更新的自动化处理,提升开发效率。

weixin_28705087的博客 427

电机瞬态分析基础(2):理想电机的基本假设和正方向规定

电机瞬态分析基础之理想电机假设条件和正方向规定

weixin_45670943的博客 1145

基于Spark的分布式深度学习框架BigDL开源了!

导读 Intel开源了基于Apache Spark的分布式深度学习框架BigDL,BigDL借助现有的Spark集群来运行深度学习计算,并简化存储在Hadoop中的大数据集的数据加载。 在Xeon服务器上运行的测试结果表明,BigDL比其他开源框架Caffe、Torch和TensorFlow有显著的性能提升。BigDL速度可与主流GPU匹敌,而且能够扩展到数十个Xeon

郑帅的博客 2630

计算数列位置N的值

本文介绍了一个数列生成问题,要求根据输入的两个整数M和N生成特定规则的数列,并输出第N个位置上的数值。数列生成规则为:前M个元素为1到M;后续元素根据前M个元素是否重复来决定计算方式(求和或求差)。文章提供了C++、Java和Python三种语言的实现方案,均包含输入处理、数列初始化、循环计算和结果输出等步骤。各语言实现中均使用集合去重特性判断重复元素,并通过内置函数或自定义方法求取最大值和最小值。该问题主要考察基础编程能力,包括数组/列表操作、最值计算和重复元素判断等基本编程技巧。

面试高手的博客 655

深度解析BigDL深度学习框架

作者:本文来源于Intel官网 编译:孙浩峰 责任编辑:孙浩峰 技术之路,一起进步,云计算、大数据、人工智能、运维、安全等方面的干货文章,欢迎投稿。 投稿信箱:sunhf@youkuaiyun.com BigDL是一种基于Apache Spark的分布式深度学习框架。通过BigDL,开发者可以使用Scala或Python语言编写深度学习应用程序,并可以充分发挥Spark群集在可扩展方面的强大能力。这篇文章主...

科技峰行者的博客 6494

YOLO26涨点改进 | 全网独家,注意力创新改进篇 | Arxiv2025 | YOLO26引入MSLA多尺度线性注意力模块,高效提取多尺度特征和建模长程依赖,含多种创新改进,助力有效涨点

本文提出了一种多尺度线性注意力模块(MSLA)来优化YOLO26模型。MSLA通过并行使用不同尺寸的深度可分离卷积(3×3至9×9)提取多尺度特征,并结合线性注意力机制高效建模全局依赖关系。该模块显著提升了模型对多尺度目标的检测能力,同时保持了轻量化特性。实验表明,MSLA能有效增强小目标检测和复杂场景下的分割精度。文章详细介绍了MSLA的网络结构、核心优势及实现代码,并提供了两种集成MSLA的YOLO26改进方案,为实时目标检测任务提供了高效解决方案。

Ai缝合怪、助力小伙伴高效发论文 297

高通 vs MTK vs 海思:三大平台 ISP 架构横向对比与实战差异分析

随着移动影像能力成为智能终端差异化竞争的核心维度,ISP(Image Signal Processor)架构日益重要。高通、MTK、海思三大 SoC 厂商在 ISP 设计上各具特色,不仅在图像处理链路、模块集成度、算法加速路径等方面存在显著差异,同时也决定了终端厂商在成像质量、调试复杂度与扩展能力上的实际表现。本文将基于真实平台项目经验,横向对比三大主流平台的 ISP 架构关键指标,系统分析其在实际开发过程中的能力边界、工程成本与调优空间,帮助工程师更精准地进行平台选型与优化策略制定。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3932

使用BigDL在Apache Spark上进行大规模分布式深度学习 [session]

Strata Data Conference北京站大会还有一个月即将召开, 有需求的同学还请抓紧时间, 点击二维码即可登录会议官网报名。 使用BigDL在Apache Spark上进行大规模分布式深度学习 讲师:Zhichao Li (Intel), Shengsheng Huang (Intel), Yiheng Wang (Intel) 14:00–14:40 Friday,

OReillyData 697

华为OD机试 - 直捣黄龙 - 广度优先搜索BFS(Python/JS/C/C++ 新系统 200分)

从样例 1 可知:5 / 2,2 -> 输出 2 9如果按“移动步数”计算应该是 8,但题目输出是 9,说明这里的“路径长度”统计的是 路径上经过的节点数量。最短路径条数:ways[end]路径长度:dist[end] + 1。

学Java,找哪吒 125

BigDL 介绍

BigDL是基于Apache Spark的分布式深度学习框架,借助现有的Spark集群来运行深度学习计算,并简化存储在Hadoop中的大数据集的数据加载。1.1丰富的深度学习支持。模拟Torch之后,BigDL为深入学习提供全面支持,包括数字计算(通过Tensor)和高级神经网络 ; 此外,用户可以使用BigDL将预先训练好的Caffe或Torch模型加载到Spark程序中。1.2极高的性能。为了实

sinat_34233802的博客 4827

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

一文读懂最近流行的CNN架构(附学习资料)

来源: 机器学习算法全栈工程师本文长度为4259字,建议阅读6分钟本文为你介绍CNN架构,包括ResNet, AlexNet, VGG, Inception。本文翻译自ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks,原作者保留版权。http://cv-tri

数据派THU 3776

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

深度学习——名词总结篇

1.Memory: 我的出处:ECN。元学习时提及此方式。 原理:目标域的图片经网络题取出特征向量,存储到memory中;下一次新的即可和上次的做聚类; 公式:(其中是随着epoch不断线性增加的: PS:但为什么新特征的影响会越来越大?) 用处: 1.Domain Adaptation,用新提取出的特征向量和旧的做聚类,可使模型在目标域上的泛化能力增强 ...

weiwei935707936的博客 6096

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

BigDL安装和使用指导

 0BigDL Building Guide0.1 Create Ubuntu VMFlavor:4vCPU 8GBMem 40GBDisk0.2 Install AnacondaDownload latest version of Anaconda from:https://www.anaconda.com/download/#linuxNote: choose latest version U...

luckyhaobin的博客 2572

Spark +深度学习:如何使用SparkNet进行分布式深度神经网络训练

原文链接:http://www.dataguru.cn/article-11647-1.html 摘要: 现如今,深度学习是机器学习中最热门的一种方法,与此同时,它还在继续取得显著成果。深度神经网络在不断地被证实是一门既有用又具有创新性的学科技术。该技术已经证明了其在之前停滞不前的研究领域中取得重大进展的 … 分析 现如今,深度学习是机器学习中最热门的一种方法,与此同时,它还在继续取得显著成果。 深度神经网络在不断地被证实是一门既有用又具有创新性的学科技术。该技术已经证明了其在之前停滞不前的研究领域中取.

weixin_45790068的博客 1943

无监督和有监督算法的区别

监督学习(supervised learning):通过已有的训练样本(即已知数据以及其对应的输出)来训练,从而得到一个最优模型,再利用这个模型将所有新的数据样本映射为相应的输出结果,对输出结果进行简单的判断从而实现分类的目的,那么这个最优模型也就具有了对未知数据进行分类的能力。在社会中,我们在很小的时候就被大人教授这是鸟啊,那是猪啊,这个是西瓜、南瓜,这个可以吃、那个不能吃啊之类的,我们眼里见到的

songying2012的专栏 2万+

你必须要知道CNN模型:ResNet

作者:叶 虎编辑:张   欢PART01 ResNet简介引言深度残差网络(Deep residual network, ResNet)的提出是CNN图像史上的一件里程碑事件,让我们先看一下ResNet在ILSVRC和COCO 2015上的战绩:图1 ResNet在ILSVRC和COCO 2015上的战绩ResNet取得了5项第一,并又一次刷新了CNN模型在ImageNet上的历史:图2 Imag

学习AI算法,请关注微信公众号:机器学习算法全栈工程师…… 4万+

BigDL、Ray、Chronos

1. 概念 1)Ray:是一个能快速简单构建分布式应用的框架,允许用户运行人工智能应用,如深度强化学习和自动化机器学习 2)BigDL:是一个在分布式大数据上构建可扩展端到端AI的开源框架 3)二者关系:BigDL能利用Ray及其本地库来构建底层基础设施,进而帮助用户构建AI应用,如AutoML和自动时间序列分析 4)RayOnSpark:BigDL通过RayOnSpark可以将Ray无缝集成到大数据预处理流水线中,并已经在一些特定领域构建了多个高级的端到端AI应用(如AutoML和Chronos)。借助于

qq_43527718的博客 2444

BigDL:用于大数据的分布式深度学习框架

BigDL:用于大数据的分布式深度学习框架 摘要 在本文中,作者提出了用于大数据平台和大数据工作流的分布式深度学习框架BigDL。它是基于Apache Spark实现的,允许用户将其深度学习应用程序编写为标准的Spark程序(以分布式方式直接在大型数据集群上运行)。它提供了一个富有表现力的“数据分析集成”(“data-analytics integrated”)的深度学习编程模型,以便用户可以在统...

fuzi2012的博客 2950

深入理解BERT Transformer ,不仅仅是注意力机制

大数据文摘与百度NLP联合出品作者:Damien Sileo编译:张驰、毅航、龙心尘BERT是google最近提出的一个自然语言处理模型,它在许多任务检测上表现非常好。如:问答、自然语言推断和释义而且它是开源的。因此在社区中非常...

1032

Apache Spark+PyTorch 案例实战

Apache Spark+PyTorch 案例实战 随着数据量和复杂性的不断增长,深度学习是提供大数据预测分析解决方案的理想方法,需要增加计算处理能力和更先进的图形处理器。通过深度学习,能够利用非结构化数据(例如图像、文本和语音),应用到图像识别、自动翻译、自然语言处理等领域。图像分类:识别和分类图像,便于排序和更准确的搜索。目标检测:快速的目标检测使自动驾驶汽车和人脸识别成为现实。自然语言处理:准确理解口语,为语音到文本和智能家居提供动力。 深度学习面临的挑战:虽然大数据和人工智能提供了大量的潜力,但从.

大模型与Agent智能体 9497

十分钟一起学会ResNet残差网络

作者 | 荔枝boy 目录 深层次网络训练瓶颈:梯度消失,网络退化 ResNet简介 ResNet解决深度网络瓶颈的魔力 ResNet使用的小技巧 总结     深层次网络训练瓶颈:梯度消失,网络退化 深度卷积网络自然的整合了低中高不同层次的特征,特征的层次可以靠加深网络的层次来丰富。从而,在构建卷积网络时,网络的深度越高,可抽取的特征层次...

TensorFlowNews 4211

Resnet网络回归的简单实现

注:参考《动手学深度学习》一书 构建的网络模型是ResNet-18,即4个残差块,每块里面有四层卷积(不包括用以改变通道数的1×1卷积层),以及最开始的卷积层和最后的全连接层,总共18层 数据集类型为简单的array或pd.DataFrame类型的二维表或二维矩阵 1、加载测试数据 1.1、构建训练数据的X-y的Dataset类,用以后续的批处理和shuffle class AnalysisDataset(Dataset): def __init__(self, in_data, col

qq_35235032的博客 1万+
上一篇: 几个例子,立点flag【python爬虫、多进程、spark-ml库等例子】
下一篇: 我的机器学习-part(2020-2)【tf-server】
滚滚的纸盒子
博客等级 码龄10年 136粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值