精华内容
下载资源
问答
  • 什么别人的模型都能快速达到较低的错误率,而你的模型错误率却居高不下。 △ 别人的曲线vs你的曲线 造出这种现象的原因可以分为4大类: 模型实现中的bug:比如标签错误的问题。 超参数选择不合适:模型对超参数很...

    关注“迈微AI研习社”,内容首发于公众号

    最近,一位来自伯克利的小哥Josh Robin分享了他的深度学习debug心得,从最简单模型开始一步步深入到复杂模型,希望能给刚上手的你一点帮助。

    为什么别人的模型都能快速达到较低的错误率,而你的模型错误率却居高不下。

    △ 别人的曲线vs你的曲线

     

    造出这种现象的原因可以分为4大类:

    1. 模型实现中的bug:比如标签错误的问题。

    2. 超参数选择不合适:模型对超参数很敏感,学习率太高或太低都不行。

    △ 合适的学习率才能保证较低的错误率
     

        3. 数据模型不适配:比如你要训练一个自动驾驶图像识别的模型,用ImageNet数据集来训练就不合适。

    △ ImageNet中的图片vs自动驾驶汽车拍摄的图片
     

        4. 数据集的构造问题:没有足够数据、分类不均衡、有噪声的标签、训练集合测试集分布不同。

     

    深度学习debug的流程策略

    针对上面的问题,小哥总结出调试深度学习模型的第一要义——悲观主义

    既然消除模型中的错误很难,我们不如先从简单模型入手,然后逐渐增加模型的复杂度。

    他把这个过程分为5个步骤:

    1. 从最简单模型入手;

    2. 成功搭建模型,重现结果;

    3. 分解偏差各项,逐步拟合数据;

    4. 用由粗到细随机搜索优化超参数;

    5. 如果欠拟合,就增大模型;如果过拟合,就添加数据或调整。

     

    从简单模型开始

    在这一步之前,Josh假定你已经有了初始的测试集、需要改进的单一指标、基于某种标准的模型目标性能。

    首先,选择一个简单的架构。比如,你的输入是图片就选择类似LeNet的架构,输入是语言序列就选择有一个隐藏层的LSTM。

    △ 多输入模型
     

    模型推荐的默认设置:

    • Adam优化器学习速率3e-4

    • 激活函数选用ReLU或tanh

    • ReLU初始化推荐使用He normal,tanh初始化推荐使用Glorot normal

    为了简化问题,我们从一个只有1万样本的数据集开始训练,数据的特点包括:固定数量的目标、分类、更小的图片尺寸。由此创建一个简单的合成训练集。

    开始搭建深度学习模型

    在搭建模型之前,Josh总结了实现(Implement)的5种最常见的bug:

        错误的张量形状;预处理输入错误;损失函数错误输入;忘记设置正确的训练模型;错误的数据类型。

    为了防止这些错误发生,Josh给出的建议是:尽可能减少代码的行数,使用现成的组件,然后再构建复杂的数据pipeline。

    运行模型后,你可能会遇到形状不匹配、数据类型错误、内存不足等等问题。

    对于第一个问题,可以在调试器中逐步完成模型创建和推理。数据类型错误是由于没有把其他类型数据转化成float32,内存不足是因为张量或者数据集太大。

    评估

    下面我们开始用错误率评估模型的性能。

    测试集错误率 = 错误率下限 + 偏移 + 方差 + 分布偏差 + 验证集过拟合

    为了处理训练集和测试集分布的偏差,我们使用两个验证数据集,一个样本来自训练集,一个样本来自测试集。

    改进模型和数据

    上一步中粗略搭建的模型错误率仍然相当高,我们应该如何改进?

    让我们先用以下方法解决欠拟合的问题:

    让模型更大(比如加入更多的层,每层中使用更多的单元);减少正规化错误分析选择另一种性能更好的模型架构调节超参数加入更多特征

    △ 解决欠拟合问题
     

    首先,我们给模型加入更多的层,转换到ResNet-101,调节学习率,使训练集错误率降低到0.8%。

    △ 把训练集错误率降低到目标值以内
     

    在出现过拟合后,我们可以增加训练集的样本量解决这个问题,把图片数量扩大到25万张。

    △ 解决过拟合问题
     

    经历过优化参数、权重衰减、数据增强等一系列操作后,我们终于把测试错误率降低到目标值。

    △ 目标错误率
     

    接下来我们着手解决训练集和测试集的分布偏差问题。

    分析测试验证集错误率,收集或者合成更多训练数据弥补二者的偏差。比如下面的自动驾驶目标识别模型,训练完成后,让它判断图片里有没有人,常常发生错误。

     

    △ 分析自动驾驶数据集的分布偏差

     

    经过分析得出,训练集缺乏夜晚场景、反光等情况。后续将在训练集中加入此类数据纠正偏差。

    另一种修正错误率的方法称为领域适配,这是一种使用未标记或有限标记数据进行训练的技术。它能在源分布上进行训练,并将其推广到另一个“目标”。

     

    超参数优化

    这是调试的最后一步,我们需要选取那些更敏感的超参数,下图是模型对不同超参数的敏感性:

     

    △ 模型对不同超参数的敏感性

     

    常用的超参数优化方法有:手动优化、网格搜索、随机搜索、由粗到细、贝叶斯优化。

    △ 由粗到细的随机搜索

     

    你可以手动优化超参数,但是耗时而且需要理解算法的细节。Josh推荐的方法是由粗到细的随机搜索、贝叶斯优化

    由粗到细的随机搜索可以缩小超高性能参数的范围,缺点是由一些手动的操作。贝叶斯优化是优化超参数最有效一种无需手动干涉的方式,具体操作请参考:

    https://towardsdatascience.com/a-conceptual-explanation-of-bayesian-model-based-hyperparameter-optimization-for-machine-learning-b8172278050f

    最后附上本文提到的所有资源。

     

    资源汇总

    下载地址(需科学前往):

    http://josh-tobin.com/assets/pdf/troubleshooting-deep-neural-networks-01-19.pdf

    或者在我们的公众号中回复debug获取。

    Josh在教程最后推荐了吴恩达的《Machine Learning Yearning》,这本书能帮你诊断机器学习系统中的错误:

    https://www.deeplearning.ai/machine-learning-yearning/

    另外杨百翰大学也有一篇搭建和调试深度学习模型的博客:

    链接:https://pcc.cs.byu.edu/2017/10/02/practical-advice-for-building-deep-neural-networks/

    推荐阅读

    (点击标题可跳转阅读)

    微信扫一扫,关注我

     

    MaiweiE-com | WeChat ID:Yida_Zhang2

    机器学习+智能控制

    展开全文
  • 最近做的实验解算相机相对于待测物的姿态数据,在物体上建立世界坐标系...这边也测试了PNP的方法,但是得到的结果精度很多,部分平移向量也与事实不符。 再问下,三维重建中对于相机姿态估计是利用什么方法估计的呢?
  • 深度学习中调问题

    2019-02-28 12:07:30
    深度学习调有哪些技巧? 作者:量子位 ... 最近,一位来自伯克利的小哥Josh Robin分享了他的深度学习debug心得,从最简单模型开始...为什么你的模型效果这么? 为什么别人的模型都能快速达到较低的错误率,而...

     

    深度学习调参有哪些技巧?

     

    作者:量子位
    来源:https://www.zhihu.com/question/25097993/answer/585714651

    最近,一位来自伯克利的小哥Josh Robin分享了他的深度学习debug心得,从最简单模型开始一步步深入到复杂模型,希望能给你一点帮助。
     

    为什么你的模型效果这么差?

    为什么别人的模型都能快速达到较低的错误率,而你的模型错误率却居高不下。
    file
    别人的曲线vs你的曲线

    造出这种现象的原因可以分为4大类:
    1、模型实现中的bug:比如标签错误的问题。
    2、超参数选择不合适:模型对超参数很敏感,学习率太高或太低都不行。
    file
    合适的学习率才能保证较低的错误率

    3、数据模型不适配:比如你要训练一个自动驾驶图像识别的模型,用ImageNet数据集来训练就不合适。
    file
    ImageNet中的图片vs自动驾驶汽车拍摄的图片

    4、数据集的构造问题:没有足够数据、分类不均衡、有噪声的标签、训练集合测试集分布不同。
     

    深度学习debug的流程策略

    针对上面的问题,小哥总结出调试深度学习模型的第一要义——悲观主义
    既然消除模型中的错误很难,我们不如先从简单模型入手,然后逐渐增加模型的复杂度。
    他把这个过程分为5个步骤:

    • 从最简单模型入手;
    • 成功搭建模型,重现结果;
    • 分解偏差各项,逐步拟合数据;
    • 用由粗到细随机搜索优化超参数;
    • 如果欠拟合,就增大模型;如果过拟合,就添加数据或调整。

     

    从简单模型开始

    在这一步之前,Josh假定你已经有了初始的测试集、需要改进的单一指标、基于某种标准的模型目标性能。
    首先,选择一个简单的架构。比如,你的输入是图片就选择类似LeNet的架构,输入是语言序列就选择有一个隐藏层的LSTM。
    file
    多输入模型模型

    推荐的默认设置:

    • Adam优化器学习速率3e-4
    • 激活函数选用ReLU或tanh
    • ReLU初始化推荐使用He normal,tanh初始化推荐使用Glorot normal

    为了简化问题,我们从一个只有1万样本的数据集开始训练,数据的特点包括:固定数量的目标、分类、更小的图片尺寸。由此创建一个简单的合成训练集。
     

    开始搭建深度学习模型

    在搭建模型之前,Josh总结了实现(Implement)的5种最常见的bug:
    错误的张量形状;预处理输入错误;损失函数错误输入;忘记设置正确的训练模型;错误的数据类型。
    为了防止这些错误发生,Josh给出的建议是:尽可能减少代码的行数,使用现成的组件,然后再构建复杂的数据pipeline。
    运行模型后,你可能会遇到形状不匹配、数据类型错误、内存不足等等问题。
    对于第一个问题,可以在调试器中逐步完成模型创建和推理。数据类型错误是由于没有把其他类型数据转化成float32,内存不足是因为张量或者数据集太大。
     

    评估

    下面我们开始用错误率评估模型的性能。
    测试集错误率 = 错误率下限 + 偏移 + 方差 + 分布偏差 + 验证集过拟合
    为了处理训练集和测试集分布的偏差,我们使用两个验证数据集,一个样本来自训练集,一个样本来自测试集。
    file
     

    改进模型和数据

    上一步中粗略搭建的模型错误率仍然相当高,我们应该如何改进?
    让我们先用以下方法解决欠拟合的问题:
    让模型更大(比如加入更多的层,每层中使用更多的单元);减少正规化;错误分析;选择另一种性能更好的模型架构;调节超参数;加入更多特征。
    file
    解决欠拟合问题

    首先,我们给模型加入更多的层,转换到ResNet-101,调节学习率,使训练集错误率降低到0.8%。
    file
    把训练集错误率降低到目标值以内

    在出现过拟合后,我们可以增加训练集的样本量解决这个问题,把图片数量扩大到25万张。
    file
    解决过拟合问题

    经历过优化参数、权重衰减、数据增强等一系列操作后,我们终于把测试错误率降低到目标值。
    file
    目标错误率

    接下来我们着手解决训练集和测试集的分布偏差问题。
    分析测试验证集错误率,收集或者合成更多训练数据弥补二者的偏差。比如下面的自动驾驶目标识别模型,训练完成后,让它判断图片里有没有人,常常发生错误。
    file
    分析自动驾驶数据集的分布偏差

    经过分析得出,训练集缺乏夜晚场景、反光等情况。后续将在训练集中加入此类数据纠正偏差。
    另一种修正错误率的方法称为领域适配,这是一种使用未标记或有限标记数据进行训练的技术。它能在源分布上进行训练,并将其推广到另一个“目标”。

    超参数优化

    这是调试的最后一步,我们需要选取那些更敏感的超参数,下图是模型对不同超参数的敏感性:
    file
    模型对不同超参数的敏感性

    常用的超参数优化方法有:手动优化、网格搜索、随机搜索、由粗到细、贝叶斯优化。
    file
    由粗到细的随机搜索

    你可以手动优化超参数,但是耗时而且需要理解算法的细节。Josh推荐的方法是由粗到细的随机搜索、贝叶斯优化
    由粗到细的随机搜索可以缩小超高性能参数的范围,缺点是由一些手动的操作。贝叶斯优化是优化超参数最有效一种无需手动干涉的方式,具体操作请参考:https://towardsdatascience.com/a-conceptual-explanation-of-bayesian-model-based-hyperparameter-optimization-for-machine-learning-b8172278050f


    最后附上本文提到的所有资源。

    资源汇总下载地址(需科学前往):
    http://josh-tobin.com/assets/pdf/troubleshooting-deep-neural-networks-01-19.pdf
    Josh在教程最后推荐了吴恩达的《Machine Learning Yearning》,这本书能帮你诊断机器学习系统中的错误:
    https://www.mlyearning.org/
    另外杨百翰大学也有一篇搭建和调试深度学习模型的博客:
    https://pcc.cs.byu.edu/2017/10/02/practical-advice-for-building-deep-neural-networks/

    — 完 —


     

     

     

     

     

    展开全文
  • 一、 为什么P过小时系统会有静?· 二、 为什么Kp过大时会有超调、震荡? 三、 为什么积分项可以消除稳态误差? 四、 为什么微分项可以抑制震荡、限制超调、以及可以作为超前控制系统的主要输出? 五、 PID整...
  • 比iPhone的远了!”。不只是微信,很多应用安卓版的图片质量就是要比iPhone版逊色很多,这到底是怎么回事?  我们团队最初也纠结过这个问题,费了半天劲、绕了好大圈,直到最后才发现,原来这是谷歌犯得一个“小...

      经常看到有人问:“安卓版微信发出去的图片怎么那么渣!比iPhone的差远了!”。不只是微信,很多应用安卓版的图片质量就是要比iPhone版逊色很多,这到底是怎么回事?

      我们团队最初也纠结过这个问题,费了半天劲、绕了好大圈,直到最后才发现,原来这是谷歌犯得一个“小”错误,而且一直错到了今天。

      谷歌的错就在于:libjpeg。

      libjpeg是广泛使用的开源JPEG图像库(参考 http://en.wikipedia.org/wiki/Libjpeg ),安卓也依赖libjpeg来压缩图片。通过查看源码,我们会发现安卓并不是直接封装的libjpeg,而是基于了另一个叫Skia的开源项目(http://en.wikipedia.org/wiki/Skia_Graphics_Engine)来作为的图像处理引擎。Skia是谷歌自己维护着的一个大而全的引擎,各种图像处理功能均在其中予以实现,并且广泛的应用于谷歌自己和其它公司的产品中(如:Chrome、Firefox、Android等)。Skia对libjpeg进行了良好的封装,基于这个引擎可以很方便为操作系统、浏览器等开发图像处理功能。

      libjpeg在压缩图像时,有一个参数叫optimize_coding,关于这个参数,libjpeg.doc有如下解释:

    boolean optimize_coding
        TRUE causes the compressor to compute optimal Huffman coding tables
        for the image.  This requires an extra pass over the data and
        therefore costs a good deal of space and time.  The default is
        FALSE, which tells the compressor to use the supplied or default
        Huffman tables.  In most cases optimal tables save only a few percent
        of file size compared to the default tables.  Note that when this is
        TRUE, you need not supply Huffman tables at all, and any you do
        supply will be overwritten.

      这段话大概的意思就是如果设置optimize_coding为TRUE,将会使得压缩图像过程中基于图像数据计算哈弗曼表(关于图片压缩中的哈弗曼表,请自行查阅相关资料),由于这个计算会显著消耗空间和时间,默认值被设置为FALSE。

      这段解释乍看起来没有任何问题,libjpeg的代码也经受了十多年的考验,健壮而高效。但很多人忽略了这一点,那就是,这段解释是十多年前写的,对于当时的计算设备来说,空间和时间的消耗可能是显著的,但到今天,这似乎不应再是问题,相反,我们应该更多的考虑图片的品质(越来越好的显示技术)和图片的大小(越来越依赖于云服务)。

      谷歌的Skia项目工程师们最终没有设置这个参数,optimize_coding在Skia中默认的等于了FALSE,这就意味着更差的图片质量和更大的图片文件,而压缩图片过程中所耗费的时间和空间其实反而是可以忽略不计的。那么,这个参数的影响究竟会有多大呢?

      经我们实测,使用相同的原始图片,分别设置optimize_coding=TRUE和FALSE进行压缩,想达到接近的图片质量(用Photoshop放大到像素级逐块对比),FALSE时的图片大小大约是TRUE时的5-10倍。换句话说,如果我们想在FALSE和TRUE时压缩成相同大小的JPEG图片,FALSE的品质将大大逊色于TRUE的(虽然品质很难量化,但我们不妨说成是差5-10倍)。

      我们又对Android和iOS进行了对比(均使用标准的JPEG压缩方法),两个系统都没有提供设置optimize_coding的接口(通过阅读源码,我们已经知道Android是FALSE,iOS不详),当压缩相同的原始图片时,结果也是一样,iOS完胜。想要品质接近,文件大小就会差出5-10倍,而如果要压缩出相同大小的文件,Android的压缩品质简直就是惨不忍睹。

      结果说明,苹果很清楚optimize_coding参数和哈弗曼表的意义,这里需要特别指出,苹果使用的哈弗曼表算法与libjpeg(及我们后来自行采用的libjpeg-turbo)不同,像素级可以看出区别,苹果似乎基于libjpeg又进行了进一步的优化,压缩出来的图片细节上更柔和、更平滑。

      以上试验,我们尝试过多个原图、多种压缩比例,试验结果均类似,如有兴趣,您不妨也自行进行尝试。

      最终我们决定,不再使用安卓系统原生的JPEG压缩方法,而是基于libjpeg-turbo自行编译了一版native的安卓库,专门用来压缩图片,这样在我们的产品中,就做到了仅仅用1/5的图片大小,就能让用户得到不逊色甚至更优的图片品质,对于我们团队来说,费了半天劲、绕了好大圈是非常值得的。(使用libjpeg-turbo还有性能上的好处,这里就不再赘述了)

      最后,附上我们团队在github上的开源项目地址,供参考:https://github.com/bither

    转载于:https://www.cnblogs.com/xiaochao1234/p/4401438.html

    展开全文
  • 最近几年,喜欢檀香的越来越多,特别是老山檀香的物件,但很多人只是看着好看,却根本不了解这种木头,也不知道该怎么盘玩,今天墨轩就带大家一起...老山檀香最重要的就是要认准产地,如果是东伽、斐济的就会很多...

    最近几年,喜欢檀香的越来越多,特别是老山檀香的物件,但很多人只是看着好看,却根本不了解这种木头,也不知道该怎么盘玩,今天墨轩就带大家一起了解一下老山檀香。

    6685401e13ff7452e83fa23948830f2b.png

    首先第一点:产区

    老山檀香原产地在印度南部卡纳塔克邦的迈索尔,是所有檀香木里面的上乘之品,非印度产区的都不能叫做老山檀香

    d4acff9a498713a17203f5d966dcf95b.png

    这个产区的檀木,树龄超过60年,砍伐之后干料又放置了有30-40年。老山檀香最重要的就是要认准产地,如果是东伽、斐济的就会差很多。

    第二点:用料

    老山檀香专业人士都知道要挑选根外级老山檀香,那什么是根外级呢?

    1019f69ed72a9bacb522a44201faaf1e.png

    具体分为两点:1、老山檀香从树根到树杈,油性密度都有很大的差距,油性密度最好的部分在树根部位,做的珠子也最出色;之后是树干;最后才是树杈,树杈一般不会用来做珠子。

    402475e9d94b86f7084acf616a74c78e.png

    2、如果把树根部门横截面切开,很容易能看到三个区域,分别是根心、根中、根外,根心部位因为生长年份太长,营养跟不上,中间都会腐烂、或空心,可想而知密度很差。根中部分密度一般,根外部分常年受阳光照射,水分充足,所以密度油性都是极好的。

    第三点:鉴别

    1、香气

    b0c1861178066dc097f25435bf71b791.png

    辨别老山檀最重要第一步就是闻气味,老山檀香味独特,只要有一件样本,以后就不会再轻易被迷惑,它的香气清淡、自然,香甜味、醇厚、独特、持久。而其他的木头香气就各有区别了!

    2、纹理

    d7396698b84f285862aa5f4731846b47.png

    老山檀香纹理通直或微呈波形甚至有纹理交错现象,纵切面有布格纹,一般成品都是老山檀香顺纹的结构,也就是树的年轮从上往下直接使用的。

    3、颜色

    老山檀香颜色一般分为4种:黄色、黑色、红色、阴沉色,黄色也可称黄肉;

    047098b87819e49d3a0f1a874b102bcb.png

    黑色的是黑肉,树龄上百年,再放置上百年 黑肉两年前就绝迹了,市场的黑肉都是作假或者染色,仅存少量私人收藏,价格也是及其高昂的。

    d588c6b2068d1f9e740b427905c58481.png

    阴沉色比较暗淡,市面上也有;还有一种就是红肉,时间较长,油性密度很好,目前也比较稀缺。

    d6a23d919fc79c713872ea49c5581cb7.png

    第四点:价格

    1970年印度檀香木供应达到4000吨,而在2016年,印度的檀香木供应仅有250吨,产量严重下滑。

    d2ddc661d00b72774a0cb39feafda945.png

    因木材严重稀缺,木头价格一直居高不下,一市斤市场价在4000元以上,再剔除差的裂的坏的、颜色白的、没有油性的,最后做出来的珠子成本可想而知。

    8166d4bae14ce7c3c7fdfcbe6dd26962.png

    还有很多朋友追求沉水级,老山檀沉水率太低了,不到5%,相当稀缺!

    70f2fe2014b9f00bdfe07e0512e57ad4.png

    物以稀为贵,市场价贵,可想而知!所以低于市场价的老山檀香,很多都是其他檀香木加工的。

    6d5fe6c2ae227c6745c3b064e460a4ff.png

    看完了这4点,想必你一定对老山檀香有了更深一步的了解。有什么疑问欢迎下方评论留言。不知不觉写了这么长,盘玩和保养还没来得及写,那就等下一期再见吧!

    展开全文
  • 标签平滑(Label smoothing),像L1、L2和dropout一样,是机器学习领域的一种正则化方法,通常用于分类问题,目的是防止模型在训练时过于自信地预测标签,改善泛化能力的问题。 NIPS 2019上的这篇论文When Does ...
  • 训练效果特别

    2021-01-08 07:00:18
    <div><p>你好,我应用你提供的model和data,...效果都特别,没有更改超,请问这是为什么?谢谢</p><p>该提问来源于开源项目:eragonruan/text-detection-ctpn</p></div>
  • 1 我这FAST-SCNN训练出来使用GPU(2070S)的推理时间是80ms,无法再提高。百度官网的数据是8ms(V100),差距10倍 ...图像增强使用后效果确实好,但选用什么增强方式很重要(比如数据本身不是很清晰并且有水印,就不...
  • 有些感觉没什么技术可写

    千次阅读 2020-08-18 08:30:29
    原来写了太多的技术文章,这段时间来,写技术比较少,都是写些时政...虽然写代码,做设计,加班什么的都不比年轻人,但毕竟还是这个年龄了,该思考一些更深层的东西了。当然,精力有限,除了IT行业,现在还合了其它
  • 我为什么弃用GAN?

    2020-10-13 08:36:20
    输出单一、调麻烦、损失函数不能收敛、稳定性。 苏黎世理工大学的博士Andreas Lugmayr历数了各种GAN的“罪状”,说出了今后弃用GAN的话。 说出“弃用”,当然是已经有了B计划。 Andreas Lugmayr博士和...
  • 什么是方法及变量?

    2019-03-12 15:09:02
    :1.在类内声明2.用于表示相应的行为3.可以通过类名或对象名调用的方法 定义:成员方法是在类内声明,用于表示相应的行为,可以通过类名或对象名调用的方法 按有无返回值划分:有返回值,无返回值 按有无参数...
  • 什么是职称?专业技术资格简称职称,通常所说职称的是专业技术人员学术、技术水平的标志,代表着一个人的学识水平和工作实绩,表明专业技术人员具有从事某一职业所必备的学识和技能、水平的证明。01职称评审1共分29...
  • 贾浩楠 发自 凹非寺量子位 报道 | 公众号 QbitAI输出单一、调麻烦、损失函数不能收敛、稳定性。苏黎世理工大学的博士Andreas Lugmayr历数了各种GAN的“罪状”,说出了今后弃用GAN的话。说出“弃用”,当然是已经...
  • 一句话你不知道用什么模型的时候就用RF。优点 万金油。只要是分类,回归问题,都能一...总有一些树蒙对,所以不管是什么问题,运行出来的效果不会太。 缺点 内存消耗高。种几百颗树,没有十几亩“地”不行。 容易过拟
  • 比iPhone的远了!”。不只是微信,很多应用安卓版的图片质量就是要比iPhone版逊色很多,这到底是怎么回事? 我们团队最初也纠结过这个问题,费了半天劲、绕了好大圈,直到最后才发现,原来这是谷歌犯得一个“小”...
  • SQL Server 存储过程

    2020-05-20 17:54:41
    SQL Server 存储过程什么叫存储过程存储过程的优缺点创建无存储过程语法调用无存储过程创建有的存储过程调用有的存储过程 什么叫存储过程 存储过程是一个预编译的sql语句 ,编译后可多次使用。 存储过程的优...
  • day11 函数参数详解

    2019-01-11 18:00:42
    1.什么是函数 实现某一功能的代码集合体 2.为什么需要函数 代码结构不清晰,可读性 冗余度高 扩展性,可维护性 3.定义函数 def 函数名(参数):  '''  文档注释  '''  代码块   return 值 ...
  • 什么是函数在程序具备某一功能的工具=》函数事先准备好工具=》函数的定义遇到应用场景、拿来就用=》函数的调用分为两大类:1. 内置函数2. 自定义函数2. 为何要用函数1. 代码冗余2. 程序的组织结构不清晰,可读性3...
  • SqlServer-存储过程1.0

    2020-05-20 19:23:30
    缺点:维护性较,相对于简单sql,存储过程并没有什么优势,并且在进行调试时比较困难 作用 可以提高运行效率,并且使用存储过程的系统更稳定。 更多的可以参考 【随风飘扬中】的 存储过程的作用和意义 使用范
  • # 1、什么是函数: # 函数就相当于具备某一功能的工具。 # 函数的使用必须遵循一个原则:先定义,后使用 # 2、为何要用函数: # 1、不用函数的话,代码冗余,程序的组织结构不清晰,可读性。 # 2、不用函数的话,...
  • python装饰器的使用

    2020-12-19 10:59:04
    它可以使我们的代码看起来更简洁,可以修改部分函数功能,让你的代码看起来很“高级”,当然,它也可能会造成代码的阅读性变,所以在使用装饰器的时候,你需要做一个取舍。 2、装饰器的原理是什么,当一个函数...
  • 函数基础

    2019-01-10 14:25:03
    一.什么是函数? 是实现某一功能的代码的集合体   二.为什么要用函数 ...1.防止代码结构混乱,可读性 ...1.什么时候使用无函数 不需要外界数据就能完成功能   2.调用 名称() 直接调用   3.返回值 ...
  • 如果热电偶的测量端与比端存在温度,则显示仪表将指出热电偶发生的热电动势。  .热电阻的测量原理是什么?  热电阻是应用金属导体或半导体有温度变更时本身电阻也随着产生变更的特征来测量温度的,热电
  • 如果热电偶的测量端与比端存在温度,则显示仪表将指出热电偶发生的热电动势。  .热电阻的测量原理是什么?  热电阻是应用金属导体或半导体有温度变更时本身电阻也随着产生变更的特征来测量温度的,热电
  • 现在自费出书已经不是什么新鲜事了,我们...如果是编的话,看所编的书籍进度了,有的快的已经走完了前边的流程,就挂编名额了,也会有一周就出书的可能。这里我们不说挂编的这种自费出书方式,只说完全自己的稿
  • Camera Tuning?

    万次阅读 多人点赞 2017-06-08 23:41:02
    刚入职的时候我是很懵逼的,Camera Tuning是什么鬼,调工程师?以前在学校会经常调侃同学们做深度学习实际上就是调工程师,但是这个工作听起来貌似更符合这个职位名称。大概的说,做Camera Tuning是由于camera...

空空如也

空空如也

1 2 3 4 5
收藏数 92
精华内容 36
关键字:

参什么差