DeepLearning

推荐系统中特征工程的自动化——Deep Crossing模型

本文是(2016)Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features笔记 主题:在搜索页面推荐广告 维度:用户、广告商、搜索平台 目标:展示用户最想看的广告 概念: query:搜索语句 Campaign:广告主在一段明确的期间里(如一年),推出一系列拥有共同主题或讯息的广告,以期建立广告讯息的累积效果,塑造品牌与企业一致的形象,并给予目标受众持续而深刻的刺激与冲击。 特征: 分类变量——one-hot vector campaign id——分成一组特征对: a)CampaignID:点击Top10000的id做one-hot,(0,0,0,,,0)代表所有剩下的id b)CampainIDCount:campaign的统计量,比如特征值(be referred to as counting feature)。 交叉特征:deep crossing 不使用交叉特征。 模型结构: feature#2:低于256维,跳过embedding层 其他feature:进入embedding层(单层ReLU) embedding层的输入+低维变量,合并为k维特征进入stacking层。 residual层: 残差层由如下的残差单元组成,它们是由图像识别模型Residual Net中的残差单元改造而来: 残差单元的特殊之处在于,输入会在经过两个ReLU层后,加上它本身。也就是说,F函数拟合的是输出与输入的残差值。 模型对比:作者尝试过深层神经网络的模型,但是效果并没有好于2-3层的神经网络。deep cross是可以轻易优于2-3层神经网络的模型。

keras瞎搞系列-卷积自编码去噪

keras瞎搞系列-卷积自编码去噪 我们把训练样本用噪声污染,然后使解码器解码出干净的照片,以获得去噪自动编码器。首先我们把原图片加入高斯噪声,然后把像素值clip到0~1。 头文件 from keras.layers import Input,Convolution2D from keras.models import Model from keras.datasets import mnist from keras.callbacks import EarlyStopping import numpy as np import matplotlib.pyplot as plt 导入数据 (X_train,_),(X_test,_) = mnist.load_data() X_train = X_train.astype('float32')/255. X_test = X_test.astype('float32')/255. 将值归一化到0-1 调整大小 这里所需要的是[28,28,1]维的,所以得调整大小。 X_train = np.reshape(X_train,(len(X_train),28,28,1)) X_test = np.reshape(X_test,(len(X_test),28,28,1)) 添加噪声 noise_factor = 0.5 X_train_noisy = X_train+noise_factor*np.random.normal(loc=0.0,scale=1.0,size=X_train.shape) X_test_noisy = X_test+noise_factor*np.random.normal(loc=0.0,scale=1.0,size=X_test.shape) X_test_noisy = np.clip(X_test_noisy,0.,1.) X_train_noisy = np.clip(X_train_noisy,0.,1.) 构建模型 input_img = Input(shape=(28,28,1)) x = Convolution2D(32,(3,3),activation='relu',padding='same')(input_img) x = MaxPooling2D((2,2),padding='same')(x) x = Convolution2D(32,(3,3),activation='relu',padding='same')(x) encoded = MaxPooling2D((2,2),padding='same')(x) x = Convolution2D(32,(3,3),activation='relu',padding='same')(encoded) x = UpSampling2D((2,2))(x) x = Convolution2D(32,(3,3),activation='relu',padding='same')(x) x = UpSampling2D((2,2))(x) decoded = Convolution2D(1,(3,3),activation='sigmoid',padding='same')(x) autoencoder = Model(inputs=input_img,outputs = decoded) 模型编译和训练 autoencoder.

数据扩增 data-augmentation的方法及代码

为了扩增数据集,采用了2种方式来进行数据的扩增。 1、使用keras的数据增强处理 2、使用skimage的数据增强处理 keras包括的处理,有featurewise视觉上图像会稍微变暗,samplewise视觉上图像会变成类x光图像形式,zca处理视觉上图像会变成灰白图像,rotation range 随机旋转图像,水平平移,垂直平移,错切变换,图像缩放,图片的整体的颜色变换,水平翻转操作,上下翻转操作, rescale。 存在的问题是图像的变换是随机的,即有的图像可能不会变换。 skimage的数据增强处理,有resize, gray,rescale,noise,flip,rotate, shift, zoom,gaussian zoom,shear,contrast,channelshift,PCA,polar。 目前极坐标变换polar,还有些问题,即转换后只有灰度图,有待解决。 相关的代码见如下地址。供参考。 github地址:https://github.com/renwoxing2016/data-augmentation

tensorflow离线源码安装

从源码离线编译安装tensorflow,记录踩过的坑: 1.tensorflow的外部依赖 tensorflow的外部依赖很多,所依赖的外部库均在WORKSPACE文件和//tensorflow/workspace.bzl文件中给出了url地址 使用如下命令可以拉取全部的external外部依赖 bazel fetch //... 为能够离线安装tensorflow,需要建立内部局域网的http服务。(建立http服务可以使用wampserver,可参考 http://blog.csdn.net/huang_yx005/article/details/50914735) 在外部联网机器中使用脚本下载全部的外部依赖,并拷贝到内部局域网的http服务的根目录下。 将WORKSPACE文件和//tensorflow/workspace.bzl文件中的外部依赖的url地址的前缀全部换成内部局域网的http服务的地址。 至此,编译安装需要外部依赖时会从内部http下载相应的库 2.换行符问题 从github上clone下来的文件的可能采用dos换行符,也可能采用unix换行符 如果某个可执行文件采用了dos换行符,此时在liunx下运行就会出错 解决方法: 使用vim打开,输入vim命令 :set ff=unix 上述命令将文件中所有的dos换行符’\r\n’转换成unix换行符‘\n’ 3.运行如下的命令时产生错误 bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg error in tensorflow setup: ‘install_requires’ must be a string or list of string containing valid project/version requirement specifiers; Expected ‘,’ or end-of-list in backposts.weakref >= 1.0rc1; 解决办法: python版本高于3.4,python安装backposts.weakref.10rc1 4.源码编译的大致流程: export TEST_TMPDIR=… export LD_LIBRARY_PATH=… 需包含cuda, cudnn相关的路径 ./configure 对tensorflow进行配置 bazel build ––config=opt —config=cuda //tensorflow/tools/pip_package:build_pip_package 编译目标程序,开启GPU If you would like to prevent new dependencies from being added during builds, you can specify the --fetch=false flag

Tensorflow1.4安装gpu教程

以前安装的是tensorflow-cpu,但是随着运算量的提高产生了鼓捣tensorflow-gpu的想法。官网的教程看起来很简单,但是坑很多。本文主要是帮助大家绕过那些坑,成功安装可以运行的tensorflow-gpu。 官网安装教程链接 这要求我们安装CUDA Toolkit 8.0和cuDNN v6.1,注意Tensorflow 1.4必须是CUDA Toolkit 8.0,但是官网默认下载CUDA Toolkit 9.1。 下载CUDA Toolkit 8.0 ,之后一直点默认的就可以安装完成 下载cuDNN v6.0,注意下载这个安装包需要注册并且填一堆问卷,下下来以后解压,然后直接拷到cuda路径对应的文件夹下面就行。具体操作是讲将下图对应三个文件夹里面的文件分别拷贝到cuda安装目录对应文件夹 cuda安装目录如下图所示 如果现实如图所示就证明tensorflow-gpu安装成功了 如果不明白的话,大家可以参考点击

Coursera-Deep Learning Specialization 课程之(四):Convolutional Neural Networks: -weak4编程作业

人脸识别 Face Recognition for the Happy House from keras.models import Sequential from keras.layers import Conv2D, ZeroPadding2D, Activation, Input, concatenate from keras.models import Model from keras.layers.normalization import BatchNormalization from keras.layers.pooling import MaxPooling2D, AveragePooling2D from keras.layers.merge import Concatenate from keras.layers.core import Lambda, Flatten, Dense from keras.initializers import glorot_uniform from keras.engine.topology import Layer from keras import backend as K K.set_image_data_format('channels_first') import cv2 import os import numpy as np from numpy import genfromtxt import pandas as pd import tensorflow as tf from fr_utils import * from inception_blocks_v2 import * %matplotlib inline %load_ext autoreload %autoreload 2 np.

Windows10(64bit,显卡GTX1050Ti)环境下的python3.5.2+tensorflow(gpu)+opencv安装配置

Windows10(64bit,显卡GTX1050Ti)环境下的python3.5.2+tensorflow(gpu)+opencv安装配置 笔记本环境: windows10(64位),显卡GTX050Ti 安装前的注意事项: 1.TensorFlow目前在windows下只支持64-bit Python 3.5 2.tensorflow1.3当前只支持CUDA8.0 1.安装python 3.5 这里,笔者使用的是python 3.5.2,具体安装如下: (1).Python3.5.2安装教程_百度经验http://jingyan.baidu.com/article/a17d5285ed78e88098c8f222.html 备注:想要下载安装anaconda 3.5的朋友可以参考下面这篇博文: http://blog.csdn.net/sb19931201/article/details/53648615 2.配置tensorflow(gpu)+opencv+其他 (2).pip升级(python3.5.2使用) 最新版本指令:打开CMD,输入 python -m pip install –upgrade pip (3).安装tensorflow 命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow/tensorflow-gpu 或pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow(CPU版) (4).安装opencv 命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python (5).安装matplotlib 指令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib (6).安装scipy(找到安装包路径,在安装) 由于scipy依赖于有mkl的numpy库,而从pip安装的numpy的库不带mkl,所以需要从上面的网站下载。 这里,笔者分别下载了scipy-1.0.0-cp35-cp35m-win_amd64.whl和numpy-1.13.3+mkl-cp35-cp35m-win_amd64.whl放在python\Scripts文件夹下。 scipy下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy numpy+mkl下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy a.安装numpy+mkl,pip install <安装包的路径>numpy-1.13.3+mkl-cp35-cp35m-win_amd64.whl b.安装scipy:pip install <安装包的路径>scipy-1.0.0-cp35-cp35m-win_amd64.whl (7).安装sklearn pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sklearn (8).安装pyinstaller pip install -i https://pypi.

人车密度估计–Towards perspective-free object counting with deep learning

Towards perspective-free object counting with deep learning ECCV2016 https://github.com/gramuah/ccnn 本文针对人车密度估计问题,主要做了两个工作:1)提出了一个 novel convolutional neural network:Counting CNN (CCNN),将图像块回归到密度图,2)第二个工作就是 提出了一个 scale-aware counting model,Hydra CNN,用于学习 multiscale non-linear regression model 这里我们将人车密度估计问题转为回归问题 3 Deep learning to count objects 3.1 Counting objects model ground truth density map D 真值密度图 由 高斯核对人车位置进行卷积得到,有了密度图通过积分得到图像中总的人车数 3.2 The Counting CNN 这个网络使用了两个 max-pooling,输入尺寸是 72×72 ,输出的密度图尺寸是18×18 变为原来的 1/4 Given a test image, we first densely extract image patches 给定一张测试图像,我们从图像中提出很多重叠的图像块,对图像块进行密度估计,再有这些图像块密度图组合为完整图像的密度估计图 3.3 The Hydra CNN 对于一般的基于回归的计数模型,通常需要对输入特征进行 geometric correction, using an annotated perspective map of the scene 为什么需要这个矫正了? 主要还是 perspective distortion Technically, the perspective distortion exhibited by an image, causes that features extracted from the same object but at different scene depths would have a huge difference in values.

百度开源移动端深度学习框架mobile-deep-learning

2017 年 9 月 25 日,百度在 GitHub 开源了移动端深度学习框架 mobile-deep-learning(MDL)的全部代码以及脚本,希望这个项目在社区的带动下能够更好地发展。 写在前面 深度学习技术已经在互联网的诸多方向产生影响,每天科技新闻中关于深度学习和神经网络的讨论越来越多。深度学习技术在近两年飞速发展,各种互联网产品都争相应用深度学习技术,产品对深度学习的引入也将进一步影响人们的生活。随着移动设备的广泛使用,在移动互联网产品应用深度学习和神经网络技术已经成为必然趋势。 与深度学习紧密联系在一起的图像技术同样在业界广泛应用。传统计算机视觉和深度学习的结合使图像技术得以快速发展。 GitHub 地址:https://github.com/baidu/mobile-deep-learning 移动端深度学习技术应用 百度应用案例 在移动端应用深度学习技术比较典型的就是 CNN(Convolutional Neural Network)技术,即常被人提起的卷积神经网络。mobile-deep-learning(MDL)是一个基于卷积神经网络实现的移动端框架。 MDL 在移动端主要有哪些应用场景呢?比较常见的如分辨出一张图片中的物体是什么,也就是 分类;或者识别出一张图片中的物体在哪、有多大,也就是 主体识别。 下面这个 App 叫拾相,可以在 Android 平台的应用宝中找到。它可以自动为用户将照片分类,对于拥有大量照片的用户来讲,这个功能很有吸引力。 另外,在手机百度搜索框右侧可以打开图像搜索,打开图像搜索后的界面效果如下图。当用户在通用垂直类别下开启自动拍开关(图中下方标注)时,手停稳它就会自动找到物体进行框选,并无需拍照直接发起图像搜索。整个过程可以给用户带来流畅的体验,无需用户手动拍照。图片中的框体应用的就是典型的深度学习主体识别技术,使用的就是 mobile-deep-learning(MDL)框架。MDL 目前在手机百度中稳定运行了多个版本,经过数次迭代后可靠性大幅提升。 业界其他案例 互联网行业在移动端应用神经网络的案例已经越来越多。 目前的流派主要有两种,其一是完全在客户端运行神经网络,这种方式的优点显而易见,那就是不需要经过网络,如果能保证运行速度,用户体验会非常流畅。如果能保证移动端高效运行神经网络,可以使用户感觉不到加载过程。使用完全脱离互联网网络在移动端运算神经网络的 App 已经举例,如前述拾相和手机百度中的图像搜索。 其二是另一种,运算神经网络过程依赖互联网网络,客户端只负责 UI 展示。在客户端神经网络落地之前,绝大部分 App 都使用了这种运算在服务端、展示在客户端的方式。这种方式的优点是实现相对容易,开发成本更低。 为了更好理解上述两种神经网络的实现方法,下面展示两个识别植物花卉的例子,分别用到了识花和形色两个 App。这两款 App 都使用了典型分类方法,都可以在 iOS 平台的 App Store 中找到。下图是一张莲花图片,这张图片使用识花和形色两个 App 分类都能得到较好的分类结果。你可以尝试安装这两款 App 并根据使用效果来判断它们分别使用了上述哪一种方法。 识花 近一年来涌现出很多花卉识别的 App。微软「识花」是微软亚洲研究院推出的一款用于识别花卉的 App,用户可以在拍摄后选择花卉,App 会给出该类花卉的相关信息。精准的花卉分类是其对外宣传的一大亮点。 形色 这款「形色」App,只需要对准植物 (花、草、树) 拍照,就能快速给出植物的名字,还有不少有趣的植物知识,如这个植物还有什么别名、植物的花语、相关古诗词、植物文化、趣味故事以及养护方法,看完收获不少。 移动端应用深度学习的难点 一直以来由于技术门槛和硬件条件的限制,在移动端应用深度学习的成功案例不多。传统移动端 UI 工程师在编写神经网络代码时,可以查阅到的移动端深度学习资料也很少。另一方面,时下的互联网竞争又颇为激烈,先入咸阳者王,可以率先将深度学习技术在移动端应用起来,就可以更早地把握时代先机。 移动端设备的运算能力相对 PC 端非常弱小。由于移动端的 CPU 要将功耗指标维持在很低的水平,制约了性能指标的提升。在 App 中做神经网络运算会使 CPU 运算量猛增。如何协调好用户功耗指标和性能指标就显得至关重要。

sensor横纹和竖纹

暗态下:横纹和竖纹比较明显 横纹: 产生原因:横纹与sensor的模拟电源的纹波相关(power denoise)。 1.avdd过低 解决办法:在sensor的模拟电源线上加一个LC低通或者使用一个LDO后效果就会好很多。 一般sensor的电源纹波最好能控制在1~2%以内,否则会很严重的影响低照度效果。 竖纹(FPN): 产生原因:coms sensor的工艺问题 1是外部电源输入,2是模组层级芯片自生数模干扰,3是某些芯片层级自生数模干扰。尽量滤波做好点。 解决办法: 1.sensor厂家一般会有FPN校正的配置 2.看看MIPI线或者并口线,看看是否做了屏蔽处理