机器学习
文章平均质量分 60
NodYoung
专注于机器人,计算机视觉,机器学习
展开
-
为什么“卷积”神经网络
一直在接触卷积神经网络,今天就说一下为什么会有卷积,卷积会带来什么好处和CNN中如何使用卷积。为什么会有卷积(这里主要解释下卷积具有什么意义,为什么人们会想到卷积。有些人一提到卷积可能首先想起来的是局部连接、参数共享呀等等,这些只是它带来的好处。如果一个方法对于我们的问题本身没有什么意义,即使它会带来一大堆的好处人们应该也是不会去使用的。)19世纪60年代,科学家通过对猫的视觉皮层细胞研究发现,每一原创 2017-04-12 22:40:52 · 10714 阅读 · 1 评论 -
tensorflow在mnist集上的使用示例(二)
在tensorflow在mnist集上的使用示例(一)中,我们已经使用tensorflow在mnist集上实现了不错的识别的效果。本文主要是进一步教你构建一个框架完善的神经网络程序,包括将构建模型封装成inference()、loss()、training()、evaluation()四部分,添加状态可视化代码等。1.参考教程原教程TensorFlow Mechanics 101 中文版 Tens原创 2017-02-27 15:33:43 · 2278 阅读 · 0 评论 -
tensorflow基本用法示例
关于tensorflow的基本用法,教程详见: TensorFlow官方文档中文版——基本使用, 和 10 minutes Practical TensorFlow Tutorial for quick learners。 (第二个教程相对更好一点) 由于版本更新,原教程的一些代码已不能使用,下面是修改之后的tensorflow基本用法示例。1. add_operationimport te原创 2017-02-20 18:46:20 · 3759 阅读 · 0 评论 -
CNN知识脉络梳理
这里梳理了一些CNN的知识脉络。用来构建CNN的各种层数据输入层/Input layer 去均值;归一化;PCA/白化卷积计算层/CONV layer 局部关联;窗口(receptive field)滑动;参数共享机制;深度/depth、步长/stride、填充值/zero-paddingReLU激励层/ReLU layer Sigmoid、Tanh(双曲正切)、ReLU(优选)、Lea原创 2017-01-16 20:27:53 · 1279 阅读 · 0 评论 -
CS231n课程笔记翻译系列之目录汇总
知乎上CS231n课程翻译系列 翻译的笔记非常好,为了方便查看,这里把所有目录列于此,并给出链接。Python Numpy教程(全篇) Python 基本数据类型容器(列表, 字典, 集合, 元组)函数类Numpy 数组访问数组数据类型数组计算广播SciPy 图像操作MATLAB文件点之间的距离Matplotlib 绘制图形绘制多个图形图像图像分类笔记 图原创 2017-01-16 20:20:40 · 17560 阅读 · 0 评论 -
YOLO下一步:输出预测boundingbox做进一步处理
对于我们使用yolo做一下research中的其他应用而言,最终目的肯定不是看看预测boundingbox就ok了。 具体对于我而言,就需要在得到boundingbox后再找出目标的局部信息。下面简单介绍一下如何完成。 1.修改源代码 在源代码image.c中找到draw_detections()函数,print出方框的位置即可,如下: 2.记录终端输出到文本文件 我这里使用的命令是|原创 2017-01-15 14:46:45 · 10708 阅读 · 9 评论 -
yolo训练之训练结果评估环节
在yolo中,怎么知道自己已经训练的怎么样了呢?自然是希望把训练过程中的loss等数据可视化一下,这篇文章中,我们主要就介绍一下这些。 1. 首先在训练开始的时候需要把终端信息记录到文件,我这里使用的命令是| tee train_log.txt ,可参考:Linux中记录终端(Terminal)输出到文本文件 。我们会得到这样一个文本文件: 2. 下面我们就可以用python对其进行处理了,原创 2016-12-29 09:20:05 · 12173 阅读 · 0 评论 -
CV_L3_Classification-SVMs
SVM做分类,非常优秀的教程。Supervised Learning In-Depth: Support Vector Machines%matplotlib inlineimport numpy as npimport matplotlib.pyplot as pltfrom scipy import stats# use seaborn plotting defaults# import原创 2017-01-10 11:14:33 · 769 阅读 · 0 评论 -
SVM和Knn实现手写数字识别
数据和程序下载地址:手写数字识别 调用SVM库实现数字识别# Standard scientific Python importsimport matplotlib.pyplot as pltimport numpy as np# Import datasets, classifiers and performance metricsfrom sklearn import datasets原创 2017-01-06 23:04:10 · 2972 阅读 · 0 评论 -
tensorflow在mnist集上的使用示例(一)
1.介绍mnist集是一个手写数字识别的图片数据集,类似于深度学习方面的”hello world”啦。本文中,我们使用tensorflow在mnist集上做了一些简单的使用示例。 关于其详细讲解,详见:MNIST机器学习入门,英文版MNIST For ML Beginners 。下面的代码也都源自这个教程。 关于更更基础的介绍,可参考:入门级解读:小白也能看懂的TensorFlow介绍 如果对原创 2017-02-24 17:07:13 · 22423 阅读 · 0 评论 -
TensorFlow最佳实践样例程序
此例程出自《TensorFlow实战Google深度学习框架》第5章 MNIST数字识别问题,很好的一个例子。工程目录:-mnist_best -dataset //存放数据集的文件夹,可以http://yann.lecun.com/exdb/mnist/下载 -model //存放模型的文件夹 -mnist_eval.py //定义了测试过程 -mnist_原创 2017-04-16 23:23:03 · 10541 阅读 · 7 评论 -
tensorflow实现LeNet-5模型
此例程出自《TensorFlow实战Google深度学习框架》6.4.1小节 经典卷积网络模型之LeNet-5模型,具体可搜索“LeNet-5, convolutional neural networks”。 例程中的网络模型与原始LeNet-5模型不太一样,网络结构如下:INPUT: [28x28x1] weights: 0CONV5-32: [28x28x32]原创 2017-04-17 21:23:42 · 19804 阅读 · 6 评论 -
经典卷积神经网络介绍
AlexNet 2012年,Hinton的学生Alex Krizhevsky提出了深度卷积神经网络模型AlexNet,获得当年ILSVRC(Image Large Scale Visual Recognition Challenge)比赛分类项目的冠军。AlexNet主要使用到的新技术如下:a) 成功使用ReLU作为CNN的激活函数,并验证了其在较深网络中的有效性,解决了Sigmod在网络较深时的原创 2017-04-22 19:08:43 · 7510 阅读 · 0 评论 -
tensorflow常用函数及概念
命令式编程与声明式编程命令式编程(imperative programming):每个语句都按原来的意思执行,可以精确控制行为。通常可以无缝的和主语言交互,方便的利用主语言的各类算法,工具包,bug和性能调试器。缺点是实现统一的辅助函数困和提供整体优化都很困难。比如numpy和Torch。 声明式语言(declarative programing):用户只需要声明要做什么,而具体执行则由系统完成。原创 2017-04-15 00:25:34 · 12620 阅读 · 4 评论 -
深度学习相关论文阅读
目标检测OverFeat文章:《OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks》rcnn代码:https://github.com/rbgirshick/rcnn,prototxt文件在\rcnn-master\finetuning\voc_2012_prototxtf原创 2017-05-07 10:40:48 · 1983 阅读 · 0 评论 -
为什么使用卷积层替代CNN末尾的全连接层
原本CNN网络的经典结构是: 卷积层——>池化层——>……——>全连接层FCN的出现为什么要把CNN网络最后的全连接层特换为卷积层?或者换句话说这样会带来什么好处呢? 1. 首先,说一下卷积层和全连接层的区别:卷积层为局部连接;而全连接层则使用图像的全局信息。可以想象一下,最大的局部是不是就等于全局了?这首先说明全连接层使用卷积层来替代的可行性。 2. 然后,究竟使用卷积层代替全连接层会带来什原创 2017-04-16 11:32:50 · 22914 阅读 · 0 评论 -
为什么“Pretrained+Fine-tuning”
Deep Learning或者说CNN在图像识别这一领域取得了巨大的进步,那么自然我们就想将CNN应用到我们自己的数据集上,但这时通常就会面临一个问题:通常我们的dataset都不会特别大,一般不会超过1万张,甚至更少。这种情况下,直接使用train from scratch的方式在小数据集上容易过拟合,尤其是在数据分布差异化很大的场景下。然后就有了迁移学习了,Transfer Learning关心原创 2017-04-13 11:43:11 · 5705 阅读 · 1 评论 -
tensorflow实现迁移学习
此例程出自《TensorFlow实战Google深度学习框架》6.5.2小节 卷积神经网络迁移学习。 数据集来自http://download.tensorflow.org/example_images/flower_photos.tgz ,及谷歌提供的Inception-v3模型https://storage.googleapis.com/download.tensorflow.org/mode原创 2017-04-19 19:24:57 · 27326 阅读 · 45 评论 -
为什么会出现Batch Normalization层
训练模型时的收敛速度问题众所周知,模型训练需要使用高性能的GPU,还要花费大量的训练时间。除了数据量大及模型复杂等硬性因素外,数据分布的不断变化使得我们必须使用较小的学习率、较好的权重初值和不容易饱和的激活函数(如sigmoid,正负两边都会饱和)来训练模型。这样速度自然就慢了下来。下面先简单示例一下数据分布的不断变化为什么会带来这些问题,如图: 我们使用Wx+b=0对小黄和小绿进行分类。由于原创 2017-04-21 16:36:12 · 9509 阅读 · 1 评论 -
提升深度学习模型表现的技巧
本文是对提升深度学习表现的一些方法总结,主要来自于,也借鉴了PPT的部分思想。Data Augmentation增加训练数据几何变换图像翻转(flipping)、剪切(crop)、缩放(scale)、旋转(rotation)、平移(shift)对比度变换(contrast)在图像的HSV颜色空间,改变饱和度S和V亮度分量,保持色调H不变.颜色变换(color)a) 在训练集像素值的RGB颜色空间进行原创 2017-01-16 21:06:42 · 2992 阅读 · 0 评论 -
KMeans聚类算法示例
三个例子:1.二位点聚类 2.手写字符聚类 3.图像压缩 Clustering: K-Means In-DepthHere we’ll explore K Means Clustering, which is an unsupervised clustering technique.We’ll start with our standard set of initial imports%matp原创 2017-01-06 22:58:47 · 6087 阅读 · 0 评论 -
14. Evaluate multiple ideas in parallel during error analysis 错误分析时并行评估多个想法(《MACHINE LEARNIN
错误分析时并行评估多个idea你的团队有以下几个想法来改进猫检测器:解决狗被错认为是猫的问题解决“大形猫科类动物(great cats)”(狮子,豹等)被错认为是家猫(宠物)的问题提高系统在模糊(blurry)图像上的表现性能……你可以同时有效地评估所有这些想法。我通常会做一个电子表格,查看100个分类错误的开发集样本并填充在表格上,同时也会写下一些针对特定样本的评论。这里用有4个错误分类翻译 2016-12-10 10:30:23 · 2795 阅读 · 0 评论 -
13. Error analysis: Look at dev set examples to evaluate ideas 错误分析:查看开发集样本来评估idea(《MACHINE
下面13~17小节将主要介绍 Basic Error Analysis 基本错误分析错误分析:查看开发集样本来评估idea当你玩你的猫app时,你注意到有时它会把狗错误识别成猫。一些狗长的像猫! 于是一个团队成员建议加入第三方软件,使系统对于狗的样本处理的更好。这些改变需要花费一个月的时间,团队其他成员也都很热衷于这一方案。你应该要求他们这样做吗?在为这个任务投资一个月之前,我建议你首先评估一翻译 2016-12-10 00:15:17 · 2270 阅读 · 0 评论 -
1. Why Machine Learning Strategy 为什么需要机器学习策略(《MACHINE LEARNING YEARNING》翻译)
为什么需要机器学习策略机器学习是很多重要应用的基础,例如网页搜索,反垃圾邮件,语音识别等。如果你或你的团队正在开发一个有关机器学习的应用,并且你想要获得快速地进步。这本书将会帮助到你。示例:建立一个识别含有猫的图片的创业公司也就是说你建立了一个创业公司,为猫爱好者提供无尽的猫的图片。你打算使用一个神经网络建立一个计算机视觉系统来检测图片中的猫。 但悲催的是,你的学习算法的准确率目前并不够好。所翻译 2016-12-08 21:52:17 · 7285 阅读 · 1 评论 -
yolo训练之样本准备环节
我们要用yolo做我们自己的objection detection,需要自己准备样本,自己训练。在训练之前,我们需要把样本转为我们需要的格式,贴标签等。这里介绍一下这部分工作。 文件目录树:training_data--image --dount #保存图片的文件夹,两类的object保存在同一文件夹下 --00001.jpg --00002.jpg原创 2016-11-21 16:03:32 · 5049 阅读 · 0 评论 -
CS231n课程知识点汇总(lecture1-5)
最近在跟看CS231n的课程,中文字幕视频、课件和翻译笔记结合着看,资源详见: 深度学习相关资源。 看完之后容易忘,怕以后找着麻烦。学习的过程中主要以课程PPT为主,记录了每节课讲的知识点,中间穿插了翻译笔记的目录,便于以后翻看。 由于中文字幕的视频正在连载中,这里先记下lecture1-5的知识点汇总,总结的不好,须在此基础上自行修改的可下载word版CS231n课程知识点汇总(lecture原创 2016-11-18 23:27:25 · 1247 阅读 · 0 评论 -
《MACHINE LEARNING YEARNING》翻译——开篇
《MACHINE LEARNING YEARNING》是Andrew NG最近出的本新书,目前正在陆续发布书的手稿。打算翻译一下这本书,并借机梳理一下机器学习方面的知识。翻译中的任何不足之处,欢迎大家不吝指出。Table of Contents (draft)目录 1. Why Machine Learning Strategy 为什么需要机器学习策略 2. How to use this翻译 2016-12-08 21:14:17 · 17497 阅读 · 8 评论 -
使用YOLO训练自己的数据样本经验总结
YOLO近一年多新出的一种object detection的方法,关于目标检测及YOLO的介绍可参见:基于深度学习的目标检测研究进展 , CVPR2016目标检测之识别效率篇:YOLO, G-CNN, Loc-Net ,RCNN学习笔记(6):You Only Look Once(YOLO):Unified, Real-Time Object Detection。 1. 好,现在我们使用yolo一原创 2016-11-03 04:45:07 · 25795 阅读 · 26 评论 -
使用keras深度学习实现回归问题示例
通常情况下,我们都是用深度学习做分类,但有时候也会用来做回归。 原文出处:Regression Tutorial with the Keras Deep Learning Library in Python 1. 这里作者使用Keras 和python的scikit-learn机器学习库来实现了对房价的回归预测。关于scikit-learn与Keras联合可参考 Scikit-Learn接口包装原创 2016-10-31 16:21:49 · 24964 阅读 · 8 评论 -
Jetson TX1上使用目标检测库YOLO出现电脑崩溃问题的解决方法
这个问题折腾一周多了,之前以为是系统问题,给TX1重刷了系统(方法详见:Jetson TX1使用记录)。然后还是不行,后来经过测试确认cuda装的确实没有问题,GPU可以正常使用。 1. 使用sudo ~/tegrastats 命令查看硬件使用状态,我们看到在系统崩溃的瞬间出现如下现象: 可以看到,内存不够,然后用了swap。把内存和CPU都吃完了就崩了。 2. 这个问题的解决方案参见:D原创 2016-10-26 22:01:44 · 3587 阅读 · 4 评论 -
keras第一个例程mnist_mlp.py解读
装好keras后,马上运行了例程minst_mlp.py,哇好牛逼,准确率98.4%,但是并不知道自己干了啥。好吧,啃代码。 1. 开头就懵了,数据集在哪呐。 好,从这句入手,找到mnist.py, 从网上下载了minst.pkl.gz,自己顺手下了下来,解压,打开,,,然而并看不懂。肿么办? 不怕,看这里:机器学习–读取mnist数据集 对于这个数据集的详情也可以参考这里:THE原创 2016-10-19 20:15:21 · 6510 阅读 · 0 评论 -
2. How to use this book to help your team 如何使用这本书来帮助你的团队(《MACHINE LEARNING YEARNING》翻译)
如何使用这本书来帮助你的团队在读完这本书后,你将对如何制定机器学习项目中的技术方向有一个深入的了解。但是你的队友可能并不理解你为什么建议某一个特定的方向。或许你希望你的团队定义一个单一数字的评估指标,但他们却并不信服。你如何说服他们?这就是为什么我把章节设置的这么短:这样你可以打印出来并给你的队友看仅仅你想要让他们知道的那1~2页。面对几个不同的选择,在优先次序上的一些改变可能会对你团队生产力产生巨翻译 2016-12-08 23:22:57 · 3830 阅读 · 0 评论 -
3. Prerequisites and Notation 预备知识和符号约定(《MACHINE LEARNING YEARNING》翻译)
预备知识和符号约定如果你曾经学习过机器学习的课程(如我在coursera上的machine learning MOOC)或有应用监督式学习的经验,你将能够理解下面这段文字。我假设你熟悉监督式学习 (supervised learning):使用标记的训练样例(x, y)学习一个从x映射到y的函数。监督式学习包括线性回归(linear regression),对数几率回归(也叫逻辑回归,logisti翻译 2016-12-08 23:50:17 · 3509 阅读 · 0 评论 -
4. Scale drives machine learning progress 规模促进了机器学习的发展(《MACHINE LEARNING YEARNING》翻译)
规模促进了机器学习的发展深度学习(神经网络)中的许多想法已经存在了几十年了。为什么这些idea现在突然火了呢?促使近年来进步的最大的驱动因素有两个:大量可用的数据。如今人们在数字设备(笔记本电脑,移动设备等)上花费比以前多得多的时间。这些活动产生了大量的数据,我们可以使用这些数据来训练我们的学习算法。计算能力的提升。仅仅在几年前我们才能够训练足够大的神经网络,以利用我们现在所拥有的巨大的数据量。翻译 2016-12-09 01:03:42 · 2999 阅读 · 1 评论 -
12. Takeaways: Setting up development and test sets 小结:建立开发集和测试集(《MACHINE LEARNING YEARNING》翻译)
小结:建立开发集和测试集从分布中选择开发集和测试集,以反映你期望在未来获得的数据,并希望在上面做得很好。这可能和你的训练数据分布不同。如果可能的话,选择来自同一分布的开发集和测试集。为你的团队选择单一数字的评估指标进行优化。如果你关心多个目标,请考虑把它们合并到一个公式中(例如平均多个错误指标),或设定满足指标和优化指标。机器学习是一个高度迭代的过程:在发现你满意的方法之前你可能需要尝试很多翻译 2016-12-09 20:38:20 · 1934 阅读 · 0 评论 -
11. When to change dev/test sets and metrics 何时更改开发/测试集和评估指标(《MACHINE LEARNING YEARNING》翻译)
何时更改开发/测试集和评估指标当开始一个新项目时,我一般会试图快速选择一个 开发/测试集 ,因为这可以给团队制定一个明确的目标。我通常会要求我的团队在不到一周之内想出一个初始的开发/测试集和评估指标。提出一个不太完美的方案并迅速行动起来往往比过分考虑这些会更好。但是“一周”这个时间表并不适用于成熟的应用。例如,反垃圾邮件是一个成熟的深度学习应用。我曾经见过那些开发已经成熟的系统的团队可能会花费数月时翻译 2016-12-09 13:57:16 · 1674 阅读 · 0 评论 -
10. Having a dev set and metric speeds up iterations 有一个开发集和评估指标来加速迭代(《MACHINE LEARNING YEARNING》翻
有一个开发集和评估指标来加速迭代对于一个新问题,很难事先知道什么方法是最合适的。即使经验丰富的机器学习研究者在发现满意的方法之前也会尝试各种各样的idea。在构建机器学习系统时,我经常会:首先想出一些构建系统的想法(idea)在代码(code)中实现这些idea进行实验(experiment),通过实验判断我的想法 work的怎么样。(通常我的前几个想法都不是很work!)基于这些知识,再生成翻译 2016-12-09 11:03:20 · 1605 阅读 · 0 评论 -
9. Optimizing and satisficing metrics 优化指标和满足指标(《MACHINE LEARNING YEARNING》翻译)
优化指标和满足指标这是组合多个评估指标的另一种方法。假设你同时关心算法的准确率和运行时间。你需要在下面三个分类器中进行选择: 这里如果将准确率和运行时间组合为单个评估指标会看起来不太自然,例如:Accuracy−0.5∗RunningTimeAccuracy-0.5*RunningTime 这里你可以替代为这样:首先,定义一个“可接受”的运行时间。例如我们说任何运行时间在100ms以内的算法翻译 2016-12-09 10:13:39 · 2731 阅读 · 1 评论 -
8. Establish a single-number evaluation metric for your team to optimize 建立一个单一数字的评估指标(MACHINE LE
为你的团队进行算法优化建立一个单一数字的评估指标分类准确率是单一数字评估指标(single-number evaluation metric)的示例:你在开发集(或测试集)上运行运行一个分类器,然后得到一个正确分类的样本比例这样一个数字。根据给指标,如果分类器A获得97%的准确率,分类器B获得90%的准确率,则我们认为分类器A更好。相比之下,查准率(Precision)和查全率(Recall)【3】翻译 2016-12-09 08:12:58 · 2349 阅读 · 0 评论 -
7. How large do the dev/test sets need to be? 开发集和测试集多大合适(《MACHINE LEARNING YEARNING》翻译)
开发集和测试集多大合适?开发集应该足够大,大到能检测出你尝试的不同算法之间的差异。例如,如果一个分类器A具有90.0%的准去率而分类器B具有90.1%的准确率,则只具有100个示例的开发集不能够检测出这0.1%的差异。与我看到的其他机器学习问题相比,100个样本的开发集很小。常见的开发集样本规模一般在1000到10000之间。在10000个样本的情况下,你将有更大的可能性检测到0.1%的性能提升。【翻译 2016-12-09 03:54:21 · 2818 阅读 · 0 评论