NoRM

推荐系统之协同过滤的原理及C++实现

我怕爱的太早我们不能终老 提交于 2020-01-24 06:42:13
1.引言 假如你经营着一家网店,里面卖各种商品(Items),有很多用户在你的店里面买过东西,并对买过的Items进行了评分,我们称之为历史信息,现在为了提高销售量,必须主动向用户推销产品,所以关键是要判断出用户除了已经买过的商品之外还会喜欢哪些商品,这就需要利用用户购买商品过程产生的历史信息。协同过滤通常分为基于用户的协同过滤和基于商品的协同过滤。 基于用户的协同过滤 :利用用户之间的相似度进行推荐 基于物品的协同过滤 :利用物品之间的相似度进行推荐 2.原理 关于协同过滤的原理网上到处都有,思想很简单,这里就不赘述,下面举一个简单的实例来说明基于用户的协同过滤: 上面每一行代表一个用户,每一列代表一个商品,比如第2行第一列的3表示用户2对商品1的评分为3,0代表对应的用户还没有购买过该商品,现在想预测用户2对商品4的评分: 找出对商品4评过分的用户:用户1,3,5,8,9,10,评分分别为:4, 2, 1, 3, 3, 1 分别计算用户2与用户1,3,5,8,9,10之间的相似度,相似度的计算方法有很多,常用的分为3类:欧氏距离,余弦相似度,皮尔逊相关系数,网上很容易查到,这里以常用的余弦相关系数说明:      要计算用户2与用户1之间的相似度,首先找到二者都评过分的商品为:商品1, 2, 9, 10,用户1对这4个商品的评分向量为r1=[5 3 4 4]

Monte Carlo methods for improved rendering

倾然丶 夕夏残阳落幕 提交于 2020-01-24 03:10:11
https://smerity.com/montelight-cpp/ https://smerity.com/montelight-cpp/code_overview.html overview stochastic ray tracing is one of the fundamental algorithms in computer graphics for generating photo-realistic images. we implement an unbiased monte carlo renderer as an experimental testbed 试验台 for evaluating improved sampling strategies. our results show that the improved sampling methods we use for rendering can give comparable image quality over twenty times faster than naive monte carlo methods. approach to simulate the global reflection of light throughout a scene, we need to consider how

Typical Loss and its gradient

若如初见. 提交于 2020-01-13 13:22:10
MSE(Mean Squared Error) l o s s = ∑ ( y − y ^ ) 2 loss = \sum(y-\hat{y})^2 l o s s = ∑ ( y − y ^ ​ ) 2 L 2 − n o r m = ∣ ∣ y − ( x w + b ) ∣ ∣ 2 L2-norm = ||y-(xw+b)||_2 L 2 − n o r m = ∣ ∣ y − ( x w + b ) ∣ ∣ 2 ​ l o s s = n o r m ( y − ( x w + b ) ) 2 loss = norm(y-(xw+b))^2 l o s s = n o r m ( y − ( x w + b ) ) 2 介绍一下各种norm 常用的norm有L1-norm,L2-norm即L1,L2范数。那么问题来了,什么是范数? 在线性代数以及一些数学领域种,norm的定义是 a function that assigns a strictly positive length or size to each vector in a vector space, except for the zero vector. ——Wikipedia 对于一个p-norm,严格定义是 ∣ ∣ X ∣ ∣ p : = ( ∑ i = 1 n ∣ x i ∣ p ) 1 p ||X||_p

SRResNet与EDSR

放肆的年华 提交于 2020-01-10 01:03:54
SRResNet SRResNet 网络来源于SRGAN,原论文( https://arxiv.org/abs/1609.04802 )提到一种扩展方式,允许修复更高频的细节。 SRResNet 的残差块架构基于这篇文章( http://torch.ch/blog/2016/02/04/resnets.html )。存在两个小的更改:一个是 SRResNet 使用 Parametric ReLU 而不是 ReLU,ReLU 引入一个可学习参数帮助它适应性地学习部分负系数;另一个区别是 SRResNet 使用了图像上采样方法,SRResNet 使用了子像素卷积层。详见: https://arxiv.org/abs/1609.07009 。 SRGAN网络结构如图1所示。 图1 在生成网络部分(SRResNet)部分包含多个残差块,每个残差块中包含两个3×3的卷积层,卷积层后接批规范化层(batch normalization, BN)和PReLU作为激活函数,两个2×亚像素卷积层(sub-pixel convolution layers)被用来增大特征尺寸。在判别网络部分包含8个卷积层,随着网络层数加深,特征个数不断增加,特征尺寸不断减小,选取激活函数为LeakyReLU,最终通过两个全连接层和最终的sigmoid激活函数得到预测为自然图像的概率。 这篇论文( https:/

波分析-Fast Ica(独立成分分析)算法

守給你的承諾、 提交于 2020-01-08 11:46:46
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 先贴代码,有空再写推倒,具体使用场景是把混杂的多个人的声音分离出来,在语音识别方面多见 I1 = wavread('speechmixture1.wav'); I2 = wavread('speechmixture2.wav'); I3 = wavread('speechmixture3.wav'); I4 = wavread('speechmixture4.wav'); subplot(4,3,1),plot(I1),title('Input1'); subplot(4,3,2),plot(I2),title('Input2'); subplot(4,3,3),plot(I3),title('Input3'); subplot(4,3,3),plot(I4),title('Input4'); % 将其组成矩阵 II1 = I1'; II2 = I2'; II3 = I3'; II4 = I4'; S=[II1;II2;II3;II4]; Sweight=rand(size(S,1)); MixedS=Sweight*S; % 将混合矩阵重新排列并输出 subplot(4,3,4),plot(MixedS(1,:)),title('Input1'); subplot(4,3,5),plot(MixedS(2,:

Elasticsearch系列---相关性评分算法及正排索引

℡╲_俬逩灬. 提交于 2020-01-07 03:50:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 概要 上一篇中多次提到了按相关性评分,本篇我们就来简单了解一下相关性评分的算法,以及正排索引排序的优势。 评分算法 Elasticsearch进行全文搜索时,Boolean Model是匹配的基础,先用boolean model将匹配的文档挑选出来,然后再运用评分函数计算相关度,参与的函数如我们提到的TF/IDF、Length Norm等,再加上一些控制权重的参数设置,得到最后的评分。 Boolean Model 作为全文搜索的基础,Boolean Model的结果决定文档是否要进行下一步的评分操作,使用AND、OR、NOT这种逻辑操作符来判断查找的文档,整个过程不评分,非常快速地将匹配的文档筛选出来。 由于Elastisearch各个版本相关度评分算法有异同,我们以6.3.1版本的BM25算法为准。 TFNORM/IDF 由Boolean Model之后得到的文档,我们开始计算文档的评分,每个文档的评分取决于每个关键词在文档中的权重,权重我们会从以下几个方面考虑: TFNORM 即词频长度(Term Frequency Norm),单个term在文档中出现的频率,并结合字段长度,出现次数越高,字段长度越低,分越高,计算公式: tfNorm(t in d) = (freq * (k1 + 1)) / (freq

Python中zip()函数的解释和可视化

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-07 00:24:26
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> zip()的作用 先看一下语法: zip(iter1 [,iter2 [...]]) —> zip object Python的内置help()模块提供了一个简短但又有些令人困惑的解释: 返回一个元组迭代器,其中第i个元组包含每个参数序列或可迭代对象中的第i个元素。当最短的可迭代输入耗尽时,迭代器将停止。使用单个可迭代参数,它将返回1元组的迭代器。没有参数,它将返回一个空的迭代器。 与往常一样,当您精通更一般的计算机科学和Python概念时,此模块非常有用。但是,对于初学者来说,这段话只会引发更多问题。让我们尝试通过示例,代码片段和可视化来解释zip()功能: 从许多迭代中获取元素,然后…… 放在一起 我们可以通过几个列表来演示zip()的功能: uppercase = ['A', 'B', 'C'] lowercase = ['a', 'b', 'c'] for x, y in zip(uppercase, lowercase): print(x, y) 输出: A a B b C c 但是,不限于两个可迭代对象作为参数传递-我们可以添加任意多个: uppercase = ['A', 'B', 'C'] lowercase = ['a', 'b', 'c'] numbers = [1, 2, 3] for x

Batch Normalization

只谈情不闲聊 提交于 2019-12-29 14:37:59
Abstract 1 问题 Internal Covariate Shift: 训练神经网络主要就是让各个层学习训练数据的分布。在深度神经网络的训练过程中,之前层(之前的任何一层)的参数的发生变化,那么前一层的输出数据分布也会发生变化,也即当前层的输入数据分布会发生变化。由于网络层的输入数据的分布本身都在发生变化,那么训练过程中,当前神经网络层将要持续的学习适应新的数据分布。所以,当一个学习系统的输入数据分布发生变化时,我们说它在经历 Internal Covariate Shift。 由于以上原因,在神经网络训练中, 学习率 需要比较小,并且需要谨慎的进行 参数初始化 ,并且在使用 饱和非线性 的激活函数时效果很不好。 2 解决方法 每一个mini-batch进行一次batch normalization。 3 效果 可以使用更大的学习率 -> 加速训练过程,不必过于担心参数初始化,有时可以省略dropout。 1. Introduction 神经网络在优化时,通常采用SGD或其变种(momentum, Adagrad等), 实际中通常采用批量梯度下降。 SGD虽然简单有效,但需要谨慎调节超参数,尤其是学习率和初始参数值。训练过程也较为复杂,因为之前层中任何一点小的参数的变化,在层数加深的过程中,都会使当前层的输入数据分布有很大变化。所以网络层需要不断适应新的数据分布,也就是面临

Jetson Nano TensorRt sampleSSD例程

最后都变了- 提交于 2019-12-25 13:20:52
1 平台: jetson Nano + 128gtf卡+ jetpack:jetson-nano-sd-r32.1-2019-03-18 .zip sampleSSD目录:/usr/src/tensorrt/sample/sampleSSD/ 使用的data文件在“:/usr/src/tensorrt/data/ssd/ 编译之后的可执行文件在:/usr/src/tensorrt/bin/ 2 环境准备: 2.1 主要为了装上pillow sudo apt-get -y install cmake sudo apt-get install python3 sudo apt-get install python3-pip sudo apt-get install python3-dev sudo apt install libopenblas-dev libatlas-dev liblapack-dev sudo apt install liblapacke-dev checkinstall sudo pip3 install numpy scipy sudo pip3 install pyyaml sudo pip3 install scikit-build sudo apt install libffi-dev sudo pip3 install cffi sudo apt

转:SSD详解

梦想的初衷 提交于 2019-12-21 03:01:25
原文:http://blog.csdn.net/a8039974/article/details/77592395,   http://blog.csdn.net/jesse_mx/article/details/74011886 另外一篇很详细的解析:https://www.cnblogs.com/xuanyuyt/p/7222867.html SSD github : https://github.com/weiliu89/caffe/tree/ssd SSD paper : https://arxiv.org/abs/1512.02325 SSD eccv2016 slide pdf : http://download.csdn .NET /download/zy1034092330/9940054 SSD pose estimation paper : http://download.csdn .net /download/zy1034092330/9940059 图1 缩进SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测 算法 ,截至目前是主要的检测框架之一,相比Faster RCNN有明显的速度优势,相比YOLO又有明显的mAP优势(不过已经被CVPR 2017的YOLO9000超越)