自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 hive join时需要注意的几个细节

hive 两个表 join时key的不同会出现不同的情况:需要join的表的key唯一这是最简单的情况,以left join为例,join后的表的条数应该等于左表的数量需要join的表的key不唯一这是比较复杂的一种情况,若有以下两个表a.id121b.id1312若a与b表join的适合最终表的row n...

2018-10-31 17:32:04 380

原创 LSTM/GRU tensorflow及keras实现

LSTM/GRU在文本分类、情感分析及语言建模等方面有很大的用处,本文主要对这两种方法的tensorflow和keras实现进行分析1.LSTM/GRU的tensorflow实现a.文本处理一般来说, 需要先把句子划分为词语(对于英文来说,直接将句子划分为单词的列表即可;对于中文,需要对句子进行分词,本文的讲述以英文为例)from tensorflow.contrib import le...

2018-09-26 17:14:46 4579 1

原创 grep、sed、awk

1、grep grep -n root /etc/passwd 将文件中含有root的行找出来,并显示行号 grep -v root /etc/passwd 将文件中没有root的行找出来,并显示行号 grep ‘energywise’ * 找出当前目录下含有energywise的文件 grep -r ‘energywise’ * 找出当前目录及其子目录下含有en

2017-12-01 13:24:25 255

转载 Hive性能优化

作者:哥不是小萝莉 出处:http://www.cnblogs.com/smartloli/

2017-09-22 11:52:22 269

原创 Maven中POM文件的理解

POM文件通过XML语法来管理Maven项目,其中包含项目间的依赖关系。1、Maven内置属性及使用(Maven自定义,可直接使用)${basedir} 表示pom文件所在的目录${version} 表示项目版本${project.basedir} 同basedir${user.home}表示用户目录${env.JAVA_HOME}表示JAVA_HOME变量所在的路径2、POM文件的结构

2017-09-22 10:58:03 1299

转载 Hive Mapper和Reducer的设置

1、Mapper的影响因子 input_file_num:文件数量 input_file_size:文件大小 mapred.max.split.size(default 265M) mapred.min.split.size(default 1B) 切割算法(TextInputFormat切分) splitSize=max[minSize,min(maxSize,blockSize)]H

2017-09-07 11:58:30 1706

原创 Linux I/O重定向

0表示标准输入1表示标准输出2表示标准错误输出>默认为标准输出重定向,与 1> 相同>&>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中/dev/null 废弃掉不输出“&-“表示关闭文件标识符一些基本的命令ls /dev &>filename 将标准输出和错误输出到文件中,其中&在此是标准输出和错误输出j<>filename表示把文件打开,并指明文件标识

2017-07-25 11:16:59 241

原创 Hive常用的命令

显示已有数据库列表 show databases;使用数据库db use db;显示数据表列表 show tables;描述数据表结构 desc/describe tables;创建数据表 CREATE TABLE u_data ( userid INT, movieid INT, rating INT, unixtime STRING) ROW FORMAT DELIM

2017-07-14 08:58:11 364

原创 Shell的使用

常用命令#!/bin/bash     开始代码,表示用bash来执行我们的文件 chmod +x filename     添加可执行属性,新创建的脚本都需要添加可执行属性 varname=2     赋值(注意不要有空格)$var或${var}      使用变量printf '%s\n' "A is: $a"   打印 echo "this is a $varname"

2017-07-13 14:45:53 312

转载 Tensorboard的使用

转载自:http://blog.csdn.net/sinat_33761963/article/details/62433234标签(空格分隔): 王小草Tensorflow笔记笔记整理者:王小草 笔记整理时间:2017年3月7日 代码原文请见github:当使用Tensorflow训练大量深层的神经网络时,我们希望去跟踪神经网络的整个训练过程中的信息,比如迭代

2017-06-01 09:20:51 6009

原创 利用TensorFlow实现CNN

import tensorflow as tffrom tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets mnist = read_data_sets("G://MNIST_data/", one_hot=True)def weight_variable(shape): initial = t

2017-06-01 09:17:01 477

原创 tensorflow使用

目前tensorflow是深度学习中非常流行的一个工具包,它是由google研发的,其基本原理是计算图的模型。安装目前版本(2017年5月)的tensorflow支持直接进行pip进行安装,但唯一需要注意的一点是目前只支持python3版本pip3 install tensorflow入门1)placeholder placeholder顾名思义只是起到占位的作用,一般只是首先指明数据类型,而具体

2017-05-31 20:19:18 346

原创 循环神经网络

1、RNN RNN的结构是十分灵活的,如下图所示: 其中从左到右的结构分别可以用来作为神经网络、图形标注、情感分析、机器翻译、视频分类。 a、Vanilla RNN b、LSTM 原始的RNN有很大的缺点,在训练序列较长的模型时,容易造成梯度消失和梯度爆炸的情况发生(不断进行矩阵的相乘)。因此,通常实际中使用RNN的变种LSTM(Long Short Term Memory),即将

2017-05-08 11:02:52 782

原创 Word Vector

Word Vector 方法通常情况下,我们需要解决的问题都是和数字来打交道。对于nlp而言,语言中包含很多非数字的词语,要想实现对一句话的理解,首要做的是将词语转化为向量。将词语转化为向量的方法主要有3大种。下面分别进行介绍:1、One hot Encoding即将词语转化为一个长度为单词库中单词数量相同的向量,该向量在该词的位置处值为1,其他位置处值为0。这种表达方式很简单,但缺点也是很明显的。

2017-05-07 20:40:46 767

原创 Localization and Object Detection

Localization思路1:看作回归问题首先考虑单个物体的检测,对单个物体的分类来说,已经很清楚了,在网络的最后一层加上softmax层或者multi-svm即可。对于检测问题,我们需要获得矩形边框的位置,一个简单的思路是将这个问题看作回归问题(x, y, w, h),所以很简单将分类问题的最终一层换为regression即可。 其基本思路是: (1)训练一个分类网络(Alex net, V

2017-05-06 10:49:29 1770 1

原创 CNN训练

CNN训练技巧实现完成神经网络,通常需要验证网络的参数是否正确,通常有以下步骤: 1、检验前向传播的实现是否正确采用很小的数据去验证关闭正则项,若是softmax损失则loss值应当为log(C),其中C为类别数,若是muti-svm损失,则loss值应为C-1(若bias为1时);打开正则项loss应变大2、检查反向传播实现是否正确 *用很小的人造数据(random),较小的隐含层的个数

2017-04-28 11:20:27 1263

原创 CNN可视化

CNN可视化1、查看感兴趣的任意层的方法 a、将图片放入网络 b、选择感兴趣的层,将该层中的感兴趣的神经元的上游梯度值设为1,其他神经元的值为0 c、反向传播至输入数据,求出dx2、阴影图 a、将图片传入训练过的网络 b、前向传播至softmax层之前的那一层scores输出,确定该图片所属的类型,将该类值设置为1,其他的值设为0,作为上游梯度反向传播 c、由于是灰度图,而前向传播得到的

2017-04-27 22:12:31 1180

原创 神经网络的编程实现

CNN的编程实现可以分为以下几大模块:layers层的实现,包括每个层的前向传播和反向传播函数CNN网络类的实现,通过堆叠layers层中实现的各种layer,构建网络的结构优化方法的实现包括SGD、SGD+Momentum、Adam等方法Solver类的实现,对构建的CNN网络采用实现的优化方法进行优化,求解参数layers层layers层的实现主要包含对不同种类的网络层实现前向传播和反

2017-04-27 10:29:36 1199

原创 CNN:Case Study

imagenet比赛中出现了很多优秀的网络结构,主要包括:1、LeNetLeNet是第一个被成功应用的网络,目前主要用在读取邮政编码和数字,其主要结构如下: Lenet的结构现在看来还是非常简单的,主要包含卷积–>池化–>卷积–>池化–>卷积–>FC2、AlexNetAlexNet发表于2012年,其让深度网络带到了人们的面前,和LeNet有很大的相似之处,主要的改变在非线性单元采用了Relu

2017-04-26 15:56:59 462

原创 CNN基础

1、CNN的引入传统的神经网络一般属于全连接神经网络,也就是说相邻的两层间中每一层的神经元都与另一层的神经元间有链接。这样的网络显然可以完整的保持输入数据的信息。但假设输入数据的维度较高(假设输入时图片,维度是200X200X3),相邻隐含层中隐含单元的个数为10个那么第一层的权重中,参数的个数为200X200X3X10 = 1200000个,这还仅仅是考虑了单隐含层的情况。这么多的参数当然可以很好

2017-04-26 09:58:02 447

原创 神经网络的训练

NN 训练1、训练精度曲线和验证精度曲线 两个曲线的gap可以看出过拟合程度。如果gap过大,则说明有很强的过拟合发生;相反当gap很小的时候,说明过拟合情况没有那么严重。 对于强烈过拟合的情况,可以增加正则项的权重,或者增大样本数据来解决;对于绿色曲线,train/val accuracy相差不大,这时,可以尝试增大模型复杂度。 2、学习速率的确定 可以通过更新权重前后权重的比值来确定

2017-04-09 22:33:59 1297

原创 梯度检查

Gradient Checkinga、使用centered formula df(x)dx=df(x+h)−df(x−h)2∗h\frac{df(x)}{dx} = \frac{df(x+h) -df(x-h)}{2*h} 使用该式子的原因是利用泰勒展开发现,该式子的误差项是h2h^2的高阶无穷小 b、使用相对误差来对比数值梯度和分析梯度 |f′a−f′n|max(f′a,f′n)\frac

2017-04-09 18:37:37 823

原创 预处理流程

数据预处理的3种形式:1) 除去均值法 即减去均值,既可以每一列特征去考虑,也可以全部数据放在一起考虑。或者说从RGB3个通道去考虑 即: X−=np.mean(X,axis=0)X -= np.mean(X, axis=0) X−=np.mean(X)X -= np.mean(X) 2)归一化 X−=np.std(X,axis=0)X -= np.std(X, axis=0) 或

2017-04-08 09:08:08 1560

原创 神经网络激活函数的介绍

1、Sigmoid Sigmoid函数在以往的神经网络里是很常用的,但在深度学习里用的并不那么多,它主要有以下不足: a、容易过饱和并且造成梯度消失。从图中可以看出当Sigmoid函数的值为0或1时,而我们知道sigmoid函数的导数等于其本身乘以1-其本身,那么就导致梯度为0的情况出现,考虑到梯度传播时需要与本地的梯度相乘,那么梯度通过该门函数后几乎没有信号流出。因此,在初始化梯度时一定要很小

2017-04-07 20:41:05 5766

原创 线性模型

1、KNN有其固有的劣势:必须存储所有的训练样本,当数据量很大时,显然这种做法是行不通的在预测时,需要遍历每一个训练样本,计算花销大2、定义一种新的分类器:首先定义score Function,其实是一种将样本数据映射到各类的得分,对于线性分类器来说,可以使用WTxW^T x;然后定义loss Function,用于计算预测标签和实际标签的差别;最后,最小化loss Function,获得较好

2017-04-05 16:50:33 451

原创 推荐系统:Collaborative recommendation

1、CF算法处理的问题描述:给定用户集合U={u1,u2,...un}U = \{u_1,u_2,...u_n\}以及物品集合P={p1,p2,...pm}P = \{p_1,p_2,...p_m\}和用户对物品的评分矩阵R(nxm维),预测某些用户没有评分物品可能的评分分数基于此,CF算法有两个基本的假设:(a)如果用户过去有相同的兴趣,那么在未来用户也会有相同的兴趣(b)用户的兴趣具有稳定性

2017-04-04 21:52:29 893

原创 推荐系统2

推荐系统的上下文信息实时推荐系统不能每天都给所有用户离线计算推荐结果,然后在线展示昨天计算出来的 结果。所以,要求在每个用户访问推荐系统时,都根据用户这个时间点前的行为实时计 算推荐列表。 推荐算法需要平衡考虑用户的近期行为和长期行为,即要让推荐列表反应出用户近期行 为所体现的兴趣变化,又不能让推荐列表完全受用户近期行为的影响,要保证推荐列表 对用户兴趣预测的延续性。 提高推荐结果的时间多样性

2017-03-06 11:08:30 339

原创 推荐系统实战

什么是好的推荐系统推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户有明确目的时的主动 查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。 推荐系统是为了解决信息过载而推出的推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己 有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息 生产者的双赢主流商品往往代表了绝

2017-03-04 21:40:21 2658 1

原创 Kaggle Animal Shelter Outcome整个流程

本文主要对Kaggle的一个比赛项目,进行了分析说明,希望能够查找到原因,提高数据分析的能力。具体项目要求及数据请看[这里]简而言之这是一个多分类的问题,并需要计算出属于各个类的概率,项目评判的标准是交叉熵(Cross Entropy)最小。1、数据的加载与清洗由于所给数据为csv格式,而且还有header选择使用了pandas中的read_csv函数作为加载数据的函数,具体代码如下:animals

2016-08-09 18:34:49 1338 1

原创 优先队列(Priority Queue)

优先队列的应用十分广泛,包括著名的A*算法在内的多种算法,均是利用了优先队列。优先队列的实现可以利用数组与链表,但效果都不太理想,利用二叉堆实现是最高效的算法,基于最小元素的优先队列JAVA代码如下:import edu.princeton.cs.algs4.StdOut;/* * priority Queue using binary heap */public class MinPQ<K

2016-03-13 20:09:01 332

原创 快速排序(Quick Sort)

快速排序可以说是排序算法中速度最快的通用排序方法,只要是因为它的内循环中的指令很少。虽然在最差情况之下,其时间复杂度会达到平方级别,但可以通过在排序之前运用随机打乱数组的方法,避免最坏情况的出现。 其Java代码如下:import edu.princeton.cs.algs4.StdOut;import edu.princeton.cs.algs4.StdRandom;public class

2016-03-08 22:45:52 385

原创 归并排序(Merge Sort)

归并排序是为数不多的稳定排序算法, 在最坏情况下它的时间复杂度依然能够保持在O(NlgN)的数量级上,是一种十分重要的排序算法。 Java代码如下:import edu.princeton.cs.algs4.StdOut;public class Merge { private Comparable[] aux; public void merge(Comparable[] a,

2016-03-07 22:07:26 366

原创 希尔排序

希尔排序(Shell Sort) 实质上是插入排序(Insertion Sort)的变种,它以一组序列为间隔进行插入排序,其具体代码如下: import edu.princeton.cs.algs4.StdOut;public class Shell { public static void sort(Comparable[] a) { int h = 1; while (h

2016-03-06 14:07:29 261

原创 选择排序与插入排序

选择排序与插入排序是最基本的两种排序算法,他们是复杂排序算法的基础。 其中选择排序Java代码如下:import edu.princeton.cs.algs4.StdOut;import edu.princeton.cs.algs4.StdRandom;public class Selection { public static void sort(Comparable[] a)

2016-03-05 21:49:26 274

原创 用链表实现双向队列

每个节点设置了指向前一节点与后一节点的引用pre与next,实现了队列两端增加删除元素的操作。 具体代码如下:import java.util.Iterator;import edu.princeton.cs.algs4.StdOut;public class Dequeue<Item> implements Iterable<Item>{ private Node head;

2016-03-02 21:42:13 427

原创 链表的java实现与时间和空间复杂度分析

今天主要编写了链表,其具体代码如下:import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;public class LinkList { private Node head; public LinkList() { // TODO Auto-generated construc

2016-03-01 21:38:32 951

原创 可变容量队列的数组实现

其基本思想是构建了一个QueueArray类,其API如下所示: (1) private void resize(int capacity): 当队列的长度与所使用的数组长度相差较大时,重新设置数组的大小。当队列的长度大于数组长度的1/2时,将数组长度扩大2倍;当队列的长度小于数组长度的1/4时,将数组长度缩小2倍; (2)public void enQueue(Item item): 和其他

2016-02-29 20:28:02 595

原创 用2个栈实现数学运算

在看《Algorithm》这本书时看到一个算法,可以很巧妙地实现对一个式子(字符串)实现运算,例如输入((1 + 2)* ( 1 / 2 ) ) =, 可以得到1.5.其基本原理是: 1.构建2个栈,一个用于存储数字,一个用于存储操作符。 2.从左到右扫描字符串中的元素,直到扫描结束: 获得一个子串:

2016-02-29 15:31:12 741

原创 非参方法-K NearestNeighbor(KNN)

非参方法-K NearestNeighbor(KNN)KNN方法作为一种无参方法,使用起来十分简单,方便。更为重要的是它往往能够得到很好的效果。它既可以应用到分类中,也可以应用到回归中,是一种十分重要的方法。问题:给定一组训练数据(X1,y1),(X2,y2),...(XN,yN)(X_1, y_1), (X_2, y_2),...(X_N, y_N), 同时又给定了预测样本XtX_t, 求取相对应

2016-02-27 17:04:44 1318

原创 PRML学习总结之三-----概率分布之二

PRML学习总结之三—–概率分布之二这一部分主要介绍机器学习之中的重要分布:高斯分布(Gaussian Distribution),高斯分布贯穿整个机器学习中的各个部分。本文主要介绍2维、3维高斯分布的特点及性质。高斯分布的表达式二维高斯:N(x|μ,σ2)=1(2πσ2)1/2exp{−12σ2(x−μ)2}N(x|\mu, \sigma^2) = \frac{1}{(2\pi\sigma^2)^

2016-02-18 18:57:35 1237

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除