- 博客(268)
- 资源 (6)
- 收藏
- 关注
原创 NDCG及其实现
1、NDCG的目标:希望得到的排序列表,质量越高越好。并且,如果将更相关的排到更前面,那么计算得到的NDCG是会越高的。AUC和NDCG的区别:1、AUC的含义:把正样本排在负样本前的概率。AUC关注的是全局的排序,只要正样本排在负样本之前,就可以得分。并没有加权。2、NDCG也是关注排序,但是NDCG关注的是,加权排序。比如我们希望top10的排序准确度,要比bottom10的排序准
2017-08-12 17:22:26
22369
5
原创 keras 设置学习率的办法
错误的方法:model.optimizer.lr.assign(0.01)model(X,y,nb_epoch=50)正确的方法:import keras.backend as KK.set_value(sgd.lr, 0.5 * K.get_value(sgd.lr))
2017-08-03 10:37:46
28126
2
原创 tensorflow中对于模型的参数都必须声明为变量
1、tensorflow中所有的定义都只是声明,只有在session中run的时候,才会被执行。谨记:对于模型中所有的参数都必须要使用variable来定义。可以使用tf.truncated_normal()来定义随机初始话,但是必须将随机初始化的值赋给variable。不然,每次需要访问参数的时候,都会驱动tf.truncated_normal()。正确的写法:import nump
2017-06-30 14:53:43
2615
原创 keras2 predict和fit_generator的坑
1、使用predict时,必须设置batch_size,否则效率奇低。 查看keras文档中,predict函数原型: predict(self, x, batch_size=32, verbose=0)说明:只使用batch_size=32,也就是说每次将batch_size=32的数据通过PCI总线传到GPU,然后进行预测。在一些问题中,batch_si
2017-06-21 22:29:57
38107
12
转载 二叉树中两个节点的最近公共父节点
转载:http://blog.csdn.net/hackbuteer1/article/details/8022138#这个问题可以分为四种情况来考虑:情况一:root未知,但是每个节点都有parent指针此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个方法很简单,不需要详细解释的。情况二:节点只有左、右指针,没
2017-05-09 09:19:25
3721
原创 strlen的使用注意事项
strlen的功能:strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')说明:strlen的统计功能,必须是遇到字符串中以'\0'为结束符的。不然统计结果出错. int main(){ char *Number = new char
2017-04-16 10:03:22
6993
原创 求二叉树的深度
总结:求解二叉树的深度可以使用递归的方法去求解。被调用函数和主调函数的通信方式可以考虑通过参数的引用,以及通过返回值的方式。如果被调用函数和主调函数需要同时进行多个参数的通信。那么,只能同时传参数的引用以及使用返回值的方式。求解二叉树的深度,可以使用参数引用法,以及使用返回值法.1、使用参数引用法class Solution {public: int TreeDepth(Tr
2017-03-20 10:40:38
1167
原创 归并排序代码
1、归并排序,最差时间复杂度,最好时间复杂度,平均时间复杂度均是O(nlog(n))。需要引入一个辅助的数组,空间复杂度O(n)//归并排序void mergeSort(int A[],int temp[],int left,int right){ if(left==right) return; int mid = (left+right)/2; //左右排序 mergeSort(A
2017-03-19 14:48:43
562
原创 快速排序的C++实现代码
//返回支点int findPivot(int i,int j){ return (i+j)/2;}//交换元素void swap(vector& A,int i,int j){ int temp = A[i]; A[i] = A[j]; A[j] = temp;}//进行分区int partition(vector& A,int l,int r,int pivot){
2017-03-13 09:59:27
707
原创 多层RNN的网络结构示意图
说明:多层RNN其实跟多层NN是一样的。1、输入层都会接入隐层。2、每个RNN隐层神经元都会接收该神经元前一时刻的状态,以及其他神经元前一时刻的状态。3、多层的RNN跟多层的NN其实,就是输入不仅接收当前的输入,还要接受隐层神经元前一时刻的输入。
2017-03-08 16:41:44
11051
1
原创 keras 指定程序在某块卡上训练
场景:某台机器上有三块卡,想同时开三个程序,放到三块卡上去训练。策略:CUDA_VISIBLE_DEVICES=1 python train.py就可以指定程序在某块卡上训练。
2017-03-06 18:41:59
1382
原创 keras 保存模型和加载模型
import numpy as npnp.random.seed(1337) # for reproducibilityfrom keras.models import Sequentialfrom keras.layers import Densefrom keras.models import load_model# create some dataX = np.linspa
2017-02-19 18:39:14
45659
6
原创 keras Lambda自定义层实现数据的切片,Lambda传参数
1、代码如下:import numpy as npfrom keras.models import Sequentialfrom keras.layers import Dense, Activation,Reshapefrom keras.layers import mergefrom keras.utils.visualize_util import plotfrom keras
2017-02-09 01:21:14
28878
5
原创 Tensorflow实现MultiInput & Merge操作
1、Keras的Sequential模型的理解: Sequential可以理解为容器,将网络中的各个层都通过Add操作,添加到里面。2、Tensorflow的MultiInput操作和Merge操作from keras.models import Sequentialfrom keras.layers import Dense, Activationfrom keras.l
2017-02-08 16:31:24
4231
原创 keras卷积补零相关的border_mode的选择以及padding的操作
1、keras卷积操作中border_mode的实现def conv_output_length(input_length, filter_size, border_mode, stride): if input_length is None: return None assert border_mode in {'same', 'valid'} if
2017-02-08 00:00:09
26597
6
原创 keras查看网络结构,复现别人网络结构的时候要保持尺寸的一致,用可视化的图会比较便利
场景:在复现别人网络结构的时候,要保持网络结构的一致。每层输入的尺寸和输出的尺寸要一致。在排查复现的结构是否准确,可以通过可视化的办法。将定义好的网络结构的图可视化出来。 keras可以很方便将网络结构可视化出来。 from keras.utils.visualize_util import plotplot(model, to_file='model.png',sh
2017-02-07 23:04:35
3514
1
原创 pandas read_csv 和 DictReader读取文件的区别
1、pandas 的 read_csv读取的文件会保持原始文件的数据类型,如果csv文件中对应的字段是int类型,那么读取出来的元素就是int类型,如果是str类型,那么读取出来的元素就是str类型。2、DictReader读取的全部当成是string类型经验:在读取文件内容的程序中,read_csv和DictReader一定不能混用,不然可能会带来一些隐蔽的bug,由于数据类型的
2017-02-06 20:44:53
6109
原创 keras 对于大数据的训练,无法一次性载入内存,使用迭代器
说明:我是在keras的官方demo上进行修改https://github.com/fchollet/keras/blob/master/examples/imdb_cnn.py1、几点说明,从文件中读入数据,会降低GPU的使用率,如果能够直接将数据载入内存,GPU的使用率会比较高。下面进行对比:全部数据载入内存,GPU的使用率:使用队列,边读数据边进行训练:结论:
2017-02-05 01:05:49
39399
14
原创 keras 实现CNN 进行手写字符识别
转载的博客:http://machinelearningmastery.com/handwritten-digit-recognition-using-convolutional-neural-networks-python-keras/1、显示设置输入张量的维度from keras import backend as KK.set_image_dim_ordering('th')2
2017-02-03 16:54:21
6120
原创 使用keras实现简单的前向全连接神经网络
转载的原博客地址如下:http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/下面是对该博客的几个关键点的记录:1、可以设置随机数种子的时候,建议设置随机数种子,方便结果的复现.from keras.models import Sequentialfrom keras.layer
2017-02-03 15:23:07
11911
原创 tesnorflow实现N个epoch训练数据读取的办法
方式一:不显示设置读取N个epoch的数据,而是使用循环,每次从训练的文件中随机读取一个batch_size的数据,直至最后读取的数据量达到N个epoch。说明,这个方式来实现epoch的输入是不合理。不是说每个样本都会被读取到的。对于这个的解释,从数学上解释,比如说有放回的抽样,每次抽取一个样本,抽取N次,总样本数为N个。那么,这样抽取过一轮之后,该样本也是会有1/e的概率没有被抽取到。所以
2017-01-03 09:37:26
11906
3
原创 CNN的超参数 & 宽卷积和窄卷积的理解及tensorflow中的实现
窄卷积 vs 宽卷积在上文中解释卷积运算的时候,我忽略了如何使用滤波器的一个小细节。在矩阵的中部使用3x3的滤波器没有问题,在矩阵的边缘该怎么办呢?左上角的元素没有顶部和左侧相邻的元素,该如何滤波呢?解决的办法是采用补零法(zero-padding)。所有落在矩阵范围之外的元素值都默认为0。这样就可以对输入矩阵的每一个元素做滤波了,输出一个同样大小或是更大的矩阵。补零法又被称为是宽卷积,不
2017-01-01 10:17:15
10702
原创 分享张开旭微博对于分词的理解
http://weibo.com/zhangkaixu?refer_flag=1001030102_&noscale_head=1&is_hot=1#_0【分词不是一个独立的任务】。分词的确在很多地方被使用,但不像机器翻译、语音识别、聊天那样形成一个独立的产品。用户并不对其感知,他在所有使用场景中,都如同一个hidden variable,对最后效果的影响即使不是次要的,但一定也是间接的。
2016-12-22 15:14:47
1167
原创 tensorflow CNN for mnist
code:# -*- coding: utf-8 -*-"""Created on Sat Dec 17 20:15:46 2016@author: Administrator"""import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datamnist = input_dat
2016-12-18 19:03:15
888
1
原创 tensorflow conv2d的padding解释以及参数解释
1、padding的方式:说明:1、摘录自http://stackoverflow.com/questions/37674306/what-is-the-difference-between-same-and-valid-padding-in-tf-nn-max-pool-of-t2、不同的padding方式,VALID是采用丢弃的方式,比如上述的input_width=13,
2016-12-18 16:16:55
40557
3
原创 tensorflow MNIST数据集上简单的MLP网络
一、codeimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets('MNIST_data',one_hot=True)sess = tf.InteractiveSession()x = tf.placehol
2016-12-17 21:12:12
2074
原创 FM算法能够学习到原始特征的embedding表示
FM算法是CTR预估中的经典算法,其优势是能够自动学习出交叉特征.因为这种特性,FM在CTR预估上的效果会远超LR.说明:通过FM的公式可以看出,FM自动学习交叉是通过学习到每个特征xi的向量表示vi得到的.比如说,对于field A,其特征有100w种取值,如果使用one-hot编码。那么,每个特征需要使用100w维特征表示.使用了FM算法学习之后,比如说使用vi的特征维度是10
2016-12-10 11:07:57
22122
2
原创 tensorflow tenosr的操作 concat 和 reshape
1、concat的操作是将矩阵逐行拼起来,或者逐列拼起来:import tensorflow as tft1 = [[1,2,3], [4,5,6]]t2 = [[7,8,9], [10,11,12]]sess = tf.Session()print (sess.run(tf.concat(1, [t1, t2])))结果:concat(1,[t1,t2])进行逐行拼凑,在LSTM中
2016-12-09 09:22:21
3296
原创 session.run()是非常耗时的,千万不要用session.run的方式去取数据
1、修改某一程序的时候,使用了session去取数据,导致时间效率非常低。后来,对session.run()进行了测试,发现使用session读取数据的效率是非常低下的.# -*- coding: utf-8 -*-import tensorflow as tfimport timet1 = time.time()x = tf.Variable([1.0])b =1.0start
2016-12-06 15:38:34
20757
9
原创 错误Tensor is not an element of this graph tensorflow
1、说明:tensorflow使用图来定义计算,在session中来执行图中定义的计算,如果没有显式的说明,那么session就跟默认的图相关联.graph 和 session应该是一一对应的.下面,举例说明,session如果和graph不一一对应的话,会出现errorimport tensorflow as tfdef activation(e, f, g): return e
2016-12-03 22:14:05
12662
1
原创 tensorflow将训练好的模型freeze,即将权重固化到图里面,并使用该模型进行预测
ML主要分为训练和预测两个阶段,此教程就是将训练好的模型freeze并保存下来.freeze的含义就是将该模型的图结构和该模型的权重固化到一起了.也即加载freeze的模型之后,立刻能够使用了。下面使用一个简单的demo来详细解释该过程,一、首先运行脚本tiny_model.py#-*- coding:utf-8 -*-import tensorflow as tfimport n
2016-11-28 21:54:47
56273
34
原创 tensorflow的设计理念
1、tensorflow的设计理念可以认为是定义与运行分开.具体而言,就是定义图和运行图完全分开的过程.就比如说,下面定义a = tf.add(2,2)其实就是定义了一个操作,只是在图上增加了一个加法操作,并没有真正去执行加法操作.import tensorflow as tf# Usual way to do math operation in a programa = 2 + 2p
2016-11-28 15:55:57
1292
原创 tensorflow载入数据的三种方式
Tensorflow数据读取有三种方式:Preloaded data: 预加载数据Feeding: Python产生数据,再把数据喂给后端。Reading from file: 从文件中直接读取这三种有读取方式有什么区别呢? 我们首先要知道TensorFlow(TF)是怎么样工作的。TF的核心是用C++写的,这样的好处是运行快,缺点是调用不灵活。而Python恰好相反,所以
2016-11-28 14:50:42
34722
7
原创 tensorflow读取数据到队列当中
TensorFlow是一种符号编程框架(与theano类似),先构建数据流图再输入数据进行模型训练。Tensorflow支持很多种样例输入的方式。最容易的是使用placeholder,但这需要手动传递numpy.array类型的数据。第二种方法就是使用二进制文件和输入队列的组合形式。这种方式不仅节省了代码量,避免了进行data augmentation和读文件操作,可以处理不同类型的数据, 而
2016-11-28 13:19:45
7067
3
原创 tensorflow 程序挂起的原因,即整个进程不报错又不执行的原因
一、说明:在使用tensorflow的过程中,出现过程序不报错又不接下去执行的错误,后来分析了原因是tf的数据线程没有启动,导致数据流图没办法计算,整个程序就卡在哪里。更深层次的原因是tensorflow的计算和数据读入是异步的,合理的方式是主线程进行模型的训练,然后开一个数据读入线程异步读入数据.tensorflow会在内存中维护一个队列,然后数据线程异步从磁盘中将样本推入队列当中。并且,因
2016-11-28 09:42:53
26436
18
原创 tensorflow中关于队列使用的实验
Queue:队列本身也是图中的一个节点。其他节点(enqueue, dequeue)可以修改队列节点中的内容。#-*- coding:utf-8 -*-import tensorflow as tf#创建的图:一个先入先出队列,以及初始化,出队,+1,入队操作q = tf.FIFOQueue(3, "float")init = q.enqueue_many(([0.1, 0.
2016-11-28 00:36:25
15405
6
原创 RNN学习不到长距离信息& LSTM学习到长距离信息
RNN推导参考:http://www.wildml.com/2015/10/recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients/说明:对于RNN为什么会学不到长距离信息,可以说是RNN会遇到梯度消失的问题,梯度消失的问题,本质上还是使用B
2016-11-24 22:24:16
6074
原创 梯度爆炸和梯度消失的本质原因
在本章中,我们尝试使用我们犹如苦力般的学习算法——基于反向传播随机梯度下降来训练深度网络。但是这会产生问题,因为我们的深度神经网络并不能比浅层网络性能好太多。1、如果说,深度学习的训练过程中遇到了梯度发散,也即前面的层学习正常,后面层的权重基本上不进行更新,导致的是后面的层基本上学习不到东西。那么其实,后面的层的参数基本上就是我们的随机初始化后的参数,相当于对输入的样本同一做了一个映射。只是后
2016-11-24 14:45:56
23058
2
原创 tensorflow 保存和加载模型 -2
1、我们经常在训练完一个模型之后希望保存训练的结果,这些结果指的是模型的参数,以便下次迭代的训练或者用作测试。Tensorflow针对这一需求提供了Saver类。Saver类提供了向checkpoints文件保存和从checkpoints文件中恢复变量的相关方法。Checkpoints文件是一个二进制文件,它把变量名映射到对应的tensor值。只要提供一个计数器,当计数器触发时
2016-11-23 10:57:28
23607
5
原创 tensorflow保存 和 加载模型
1、import tensorflow as tfimport numpy as np# save to fileW = tf.Variable([[1,2,3],[4,5,6]],dtype = tf.float32,name='weight')b = tf.Variable([[1,2,3]],dtype = tf.float32,name='biases')init = t
2016-11-22 22:12:47
3701
machine learining Dimensionality Reduction (Week 8) exercise
2015-04-22
machine learning Regularization (Week 3) exercise
2015-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人