![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器学习
文章平均质量分 93
秦伟H
目标是略懂:C++,深度学习,三维重建,CV,SLAM,无人机,无人车,多传感器融合,组合导航。有事邮件:qw072117@foxmail.com huqinwei987@gmail.com
展开
-
python手写神经网络之用im2col实现卷积层、池化层
简介im2col就是img to colomn主,要是把图像转成column,原因和用途也很清晰,CNN中数据是四维的,并且有滑动窗口的存在,如果用for循环,计算效率不敢看。那么原理也很简单,展开、复制、向量化。但是从示意图到实现,还是有一个地方比较绕,所以我一下也没想到实现,还是看着参考代码分析了一下才明白。示意图:其实示意图可以写两种,不带batch的,...原创 2019-12-02 19:43:14 · 2027 阅读 · 7 评论 -
python手写神经网络之Dropout实现
这里写三种实现,一种是vanilla,一种是效率更高的写法,还有一种是作为网络层的实现方法。虽然dropout的参数叫probability,一般指的不是扔的几率,是keep的几率(因为代码更好解释?)。(但是不固定,注意一致性,自恰即可)vanilla dropout的前向传播网络示意:作为对照组,给出了predict不乘以p的结果,随着数据量或者数据维度的增大,可以看到最后总...原创 2019-11-24 21:56:44 · 2925 阅读 · 0 评论 -
python手写神经网络之BatchNormalization实现
也是来源于《深度学习入门——基于Python的理论与实现》附加代码,书中只是给了BN的对比结果,展示了BN的效果,没有再赘述实现,所以这里要重写复现BN的代码。之前我曾经使用过TensorFlow的BN,它提供了两三种接口,透明程度和使用方法不相同,有的是透明到你可以自定义参数并传给BN层,然后训练参数,也有只定义一个层,全自动使用的,但是都没有自己纯手写一个python实现更透彻。而且Tens...原创 2019-11-24 14:27:02 · 3790 阅读 · 0 评论 -
python手写神经网络之手动微分与梯度校验——《深度学习入门——基于Python的理论与实现(第五章)》
下面内容,算是一个debug过程,但是也算是一个学习过程,了解梯度校验的过程和影响微分梯度计算的因素。下边是根据书本模仿的两层网络,并非抄原代码,所以有所不同,但是我主观觉得差不多(有几个接口暂不列出),但是代码不是敲出来不报错就行了,这个既然是两种梯度,那就肯定是用来梯度校验的,既然是梯度校验,那当然得真校验一把才行啊。两层网络(784,50,10)。网络全随机,不训练,从mnis...原创 2019-11-19 21:14:50 · 904 阅读 · 0 评论 -
python实现微分函数,两种计算方式对比,一个误区
v1是f(x+h)-f(x)的版本,不加后缀的版本是f(x+h)-f(x-h)的,就是所谓左右两侧更精准的那个版本,但是做对比的时候,直觉上有些问题存在,如果是f(x)=x**2,是变化的斜率,左右两侧同时计算差值是可能带来更精准的计算,但是永远都是么?f(x)=2*x呢?f(x+h)-f(x-h)和f(x+2h)-f(x)有什么区别?所以就有了v1_2版本和不加后缀版本函数的对比#http...原创 2019-11-01 15:33:07 · 1807 阅读 · 0 评论 -
TensorFlow中EMA的概念和正确使用方法
目录EMA介绍概念弥补不足:初始数据积累不足的情况深度学习训练中的作用实现典型步骤一个EMA影子变量的例子进一步接近真实情景,让w1变动例2:global_step的trainable设置最后,怎么用影子变量来测试?模拟训练与存储模型错误的模型读取方式正确的模型读取方式补一发手写的映射通用写法EMA介绍概念滑动平均exponent...原创 2019-03-06 17:05:53 · 6678 阅读 · 10 评论 -
tensorflow tensorboard使用方法、应用场景和常见问题
详细介绍:基础操作两方面:第一方面:“制作”各种标量、记录节点,图标、图片等的记录汇集,sess.run从计算图得到一次汇集的记录。关于sess.run(merged),可以把这个也当做计算图中得到了一个结果,只是不同用途。既然是计算图,就少不了要feed数据,feed的数据不同,得到的结果也就不同,如果使用了错误的feed数据,很可能得到的绘制结果也不符合预期,下边...原创 2019-03-09 19:51:01 · 4937 阅读 · 0 评论 -
win7-64安装anaconda4.6.7+cuda9.0+cudnn7.0+tensorflow-gpu1.5.0(1.9.0)+pycharm+jupyter+tensorboard+keras
学习的话,用linux还是比较好,但是双系统虚拟机跑的话只能用CPU,太慢了,所以还是要装windows,用上我的两块GPU。因为是照着别人的搭配选择的版本,整体来说比较简单,除了一些网络问题和等待,没太大的阻碍,比linux下默认自带python3的anaconda弄需要python2的caffe简单多了(手动滑稽)。过于详细的流水教程就不写了,网上很多了,主要列一些自己遇到的坑。...原创 2019-03-04 17:30:51 · 1315 阅读 · 0 评论 -
tensorflow 样本均衡问题和权重损失 交叉熵
实际训练神经网络常会遇到数据不均衡问题,数据不均衡会影响模型训练效果,可以使用权重来纠正。数据不均衡对应的原理也很简单,当一个数据不足或者过多时,模型瞎猜也能获得很高的准确率。1%的正例,99%的负例,全选负,准确率99%。自己改造mnist,进行样本均衡试验使用mnist进行训练,将训练集进行处理,指定一个分类,删除大部分样本。测试集不变,但是为了对比,测试时可以分类进...原创 2019-03-18 03:37:03 · 4657 阅读 · 6 评论 -
scipy.misc import ‘imread‘ 导入失败解决方法 python3!!!
from scipy.misc import imreadImportError: cannot import name 'imread'三个点:一,需要依赖Pillow;pip install pillow二,如果自己要用,可以从matplot等借。from matplotlib.pyplot import imread三,新版抛...原创 2019-08-24 00:27:23 · 17043 阅读 · 7 评论 -
手写softmax cross entropy的反向传播推导过程以及反向传播代码。
如图,共两部分,softmax一部分,cross-entropy一部分,a1、a2、a3是输入,y1、y2、y3是softmax的输出,t1、t2、t3是label,图中右侧输出Loss=cross entropy,输入gradient=1。正向传播和反向传播基本规则(可以参考cs231n的教程):正向就是正常运算,没什么说的,正向的多对一操作,求和,正向的一对多,每一条线都传播同样的...原创 2019-08-29 16:11:57 · 1948 阅读 · 1 评论 -
【有视频】通过观察deep dream的一些细节直观了解卷积神经网络
使用deep dream做了很多图,从中确实能直观地学到一些东西。下面是自己做的视频,使用不同通道生成了一些图形,并对比了不同的迭代次数下生成的图片。https://www.bilibili.com/video/av65825597/https://www.bilibili.com/video/av65882277/https://www.bilibili.com/video/av...原创 2019-08-30 11:23:42 · 415 阅读 · 0 评论 -
Tensorflow中BatchNormalization用法详解
目录概要:为什么引入BN为什么如果gamma和beta默认1和0,最终输出等于原样不变?关于为什么直接用mean和var做normalize就解决分布问题,还要经过scale和shift进行转换的问题关于这个BN如何被训练到根据说明文档可知,无论用哪种实现,training阶段的选择都要有:重中之重:无论接口白盒黑盒,BN操作需要使用依赖关系来完成滑动平均的更新BN...原创 2019-03-02 00:58:32 · 5438 阅读 · 3 评论 -
tensorflow生成随机数据
基础接口:用来生成随机数,可以指定均值和方差。相比简单拿来用,调一下参数,生成数据并生成图形观察对比一下, 对于直观理解数据和神经网络训练还是有帮助的。对比tf.random_normal,数据限制了范围,离群点更少,常用于神经网络参数初始化或者生成一些训练数据。weights一般要接近0但是不是0,比较方便train,所以用truncated可能优于普通random...原创 2019-02-23 19:37:15 · 1234 阅读 · 0 评论 -
Kaggle ICML2013 fer2013人脸表情识别/面部表情识别:训练、调优、调试与踩坑
目录概要:问题来源:论文对此比赛的说明:选择原因:实现与优化思路:前置:数据处理:原csv数据的读取与分割:csv数据转图片和tfrecord的存取:tfrecord接生产队列供模型训练:神经网络定义:损失函数:滑动平均(EMA):训练与优化过程:基本设置:学习率:batch_size:训练次数:Dropout:BN:...原创 2019-02-22 20:23:32 · 23890 阅读 · 67 评论 -
李宏毅 机器学习 作业 2 Hungyi.Li Machine Learning HW2 逻辑回归法实现以及优化
关于“一个属性有几个固定选项,怎么表达”的问题,数据采用one-hot,每个选项独立成一个属性,loss用交叉熵计算,这样更科学。这里不用过多操心,数据给出已经处理好了。有一段可能是助教给的参考代码,不过参考代码有些漏洞(在代码下方贴出),需要修改下,然后还有一定的调参提升空间。参考代码如下:import os, sysimport numpy as npfr...原创 2018-08-08 17:44:40 · 4340 阅读 · 14 评论 -
tensorflow中optimizer minimize自动训练简介和选择训练variable的方法
本文主要介绍tensorflow的自动训练的相关细节,并把自动训练和基础公式结合起来。如有不足,还请指教。写这个的初衷:有些教程说的比较模糊,没体现出用意和特性或应用场景。面向对象:稍微了解点代码,又因为有限的教程讲解比较模糊而一知半解的初学者。(更多相关内容,比如相关优化算法的分解和手动实现,EMA、BatchNormalization等用法,底部都有链接。)正...原创 2018-09-19 16:14:26 · 13261 阅读 · 5 评论 -
tensorflow中tf.strided_slice用法
一个工程中用到,乍一看很简单,给了下标直接就能从队列中切出数据来,但是扫一眼help给的高级用法反而有点懵,所以写了个demo。demo1:正常单轴用法,只要给出下标就能切数据import tensorflow as tfsess = tf.Session()#easy demot = tf.constant([1,2,3,4,5,6,7,8])t1 = tf.stride...原创 2018-10-01 18:46:24 · 1510 阅读 · 0 评论 -
tensorflow实现分类问题classification
数据与预测目标:x是在2和-2附近的正态分布,y是0和1,y=0代表x更接近2,也就是x是正数,y=1代表x是负数。 import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plttf.set_random_seed(2)np.random.seed(2)###############...原创 2018-09-21 14:10:23 · 1518 阅读 · 0 评论 -
tensorflow使用可变学习率进行训练(tf.train.exponential_decay)
tensorflow提供了接口,可以直接可变学习率,在训练过程中动态改变学习率。两种train_op,一种普通的固定学习率训练作为对比train_op,一种是可变学习率train_op2。接口参数:起始学习率;训练步数计数器:用来计算何时改变学习率,之所以不自动提供,而是让你手动传入变量,可能是为了你提取监控方便一些(就如我做的一样);学习率改变步数阈值:就是每过多少步变一次学...原创 2018-10-06 22:34:36 · 5014 阅读 · 0 评论 -
tensorflow使用L2 regularization正则化修正overfitting过拟合
L2正则化原理:过拟合的原理:在loss下降,进行拟合的过程中(斜线),不同的batch数据样本造成红色曲线的波动大,图中低点也就是过拟合,得到的红线点低于真实的黑线,也就是泛化更差。可见,要想减小过拟合,减小这个波动,减少w的数值就能办到。L2正则化训练的原理:在Loss中加入(乘以系数λ的)参数w的平方和,这样训练过程中就会抑制w的值,w的(绝对)值小,模型复杂度低,曲线...原创 2018-10-07 11:46:01 · 8051 阅读 · 3 评论 -
使用auto-encoder实现数据压缩、分类预测
原理简介:(文章编辑bug太多,白码字了,只能简化说了。)通过encoder-decoder的结构形成一个负、正金字塔的瓶颈结构(必须是瓶颈结构,才能起到压缩的效果,不然就成了复制了),对数据进行压缩并还原,以还原程度为指标来训练网络。训练完网络就有了一个encoder和decoder,decoder先不管,encoder能把数据压缩,因为压缩还能还原,证明原数据有冗余,压缩后的code可以直...原创 2018-09-29 12:31:52 · 4581 阅读 · 14 评论 -
tensorflow中实现自动、手动梯度下降:GradientDescent、Momentum、Adagrad
tensorflow中提供了自动训练机制(见nsorflow optimizer minimize 自动训练和var_list训练限制),本文主要展现不同的自动梯度下降并附加手动实现。learning rate、step、计算公式如下:在预测中,x是关于y的变量,但是在train中,w是L的变量,x是不可能变化的。所以,知道为什么weights叫Variable了吧(强行瞎解释一发)...原创 2018-09-29 16:58:26 · 4230 阅读 · 0 评论 -
TensorFlow实现多层LSTM识别MNIST手写字,多层LSTM下state和output的关系
其他内容https://blog.csdn.net/huqinweI987/article/details/83155110 输入格式:batch_size*784改成batch_size*28*28,28个序列,内容是一行的28个灰度数值。让神经网络逐行扫描一个手写字体图案,总结各行特征,通过时间序列串联起来,最终得出结论。网络定义:单独定义一个获取单元的函数,便于在Mult...原创 2018-10-18 16:17:53 · 1387 阅读 · 0 评论 -
python下手动实现卷积神经网络中的卷积操作(conv2d)
写这个的原因:一来好像没怎么搜到别人手动实现,作为补充;二来巩固一下基础。卷积操作示意先从一张示意图说起,卷积基础概念和操作步骤就不啰嗦了,只讲这张图,大意就是,有in-channel,有out-channel,你需要把in-channel都做卷积操作,然后产出out-channel,所以这个w是要层层拆解,w分拆成w0和w1,以对应2个out-channel。w0分拆成...原创 2018-10-23 14:10:08 · 9118 阅读 · 1 评论 -
Gradient Descent、Momentum、Nesterov的实现及直觉对比
GradientDescent、Momentum(动量)、Nesterov(牛顿动量)的直觉含义对比:Gradient Descentdef gd(x_start, step, g):#gradient descent x = np.array(x_start, dtype='float64') # print(x) passing_dot = [x....原创 2018-10-22 02:18:45 · 1483 阅读 · 0 评论 -
李宏毅 机器学习 作业1 Hungyi.Li Machine Learning HW1 PM2.5 Prediction
HomeWork1 PM2.5 Prediction课程资料:https://ntumlta.github.io/2017fall-ml-hw1/从印象笔记移过来修改的,没编辑太细,猎豹编辑CSDN出现各种错误,太麻烦,反正代码能跑。做题思路:数据处理id_x是时间点,每一个具体的x,是一个时间点。怎么抽取训练集?1-9训练,第十个验证,2-10训练,第11个验证...原创 2018-08-05 15:51:56 · 9631 阅读 · 16 评论