矩阵

二维数组中的查找

旧城冷巷雨未停 提交于 2020-03-01 05:30:11
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 这个问题有一个很巧妙的方法就是不要从左下角或者右上角开始,而是要从左上角或者右下角开始。这是因为当他从左上角或者右下角开始的话,大于的话选择一个方向,小于的话,选择另一个方向,相当于剪枝。 1 #include<iostream> 2 using namespace std; 3 class Solution { 4 public: 5 bool Find(int target, vector<vector<int> > array) { 6 if (array.size() == 0) 7 { 8 return false; 9 } 10 int y = array[0].size() - 1; 11 int x = 0; 12 while (y >= 0 && x < array.size()) 13 { 14 if (target == array[x][y]) 15 { 16 return true; 17 } else if (target > array[x][y]) { 18 x++; 19 } else if (target < array[x][y]) { 20 y--; 21 } 22 } 23

SVD 奇异值分解与word embedding

血红的双手。 提交于 2020-02-29 22:21:35
在研究NLP的过程中,遇到了word embedding, 经过一系列学习,发现它最初的原理之一来自奇异值分解。于是对奇异值分解做一个简单的记录。 资料中比较好的资料: https://www.cnblogs.com/endlesscoding/p/10033527.html 原理讲解简单,demo做的十分好! https://www.cnblogs.com/litaotao-doctor/p/5320521.html 这篇把特征值和奇异值放在一起讲,十分到位。 看完上面的资料后,我觉得自己没必要记录公式原理了,自惭形秽。好,下面开始: SVD: Sigular Value Decomposition 个人认为奇异值和特征值应该可以有相同的理解,这里我们先谈特征值: 特征值的定义为对矩阵A存在特征值 λ,特征向量x,使下式成立: 而对A的所有特征值,我们称为A的谱,记为λ(A)。 那么我们该如何理解这个式子? 有几个相关的关系可以给我们参考:矩阵A的秩不小于A的非零特征值数;如果矩阵A不满秩,则一定存在0特征值;若矩阵A可对角化,则rankA = A的非零特征值数。 也就是说 矩阵的特征值与矩阵的线性相关性是有关系的。 则我们对特征值的理解可以为: 任意矩阵A对向量x的矩阵乘法,可以理解为对x向量的表换(旋转、平移、缩放),那么Ax可以理解为一次表换,而特征值λ与x的相乘

二维数组的两种遍历方式、左右旋转、左右逆序、上下逆序 (kotlin实现)

依然范特西╮ 提交于 2020-02-29 21:48:33
文章目录 代码实现 结论 参考 代码实现 /** * desc: 二维数组 左右旋转,行内左右逆序。 上下逆序未实现。 * author: stone * email: aa86799@163.com * blog : https://stone.blog.csdn.net * time: 2020/2/29 10:25 */ class ArrayTest { private val random = Random ( 100 ) inner class Blob ( var x : Int , //x方向坐标索引 var y : Int , //y方向坐标索引 var value : Int , var pX : Int = x * 20 , //坐标点的x值。如单位间隔20 var pY : Int = y * 20 //坐标点的y值。如单位间隔20 ) fun createArray ( row : Int , col : Int ) = Array ( row ) { rowE -> Array ( col ) { colE -> Blob ( rowE , colE , random . nextInt ( 100 ) ) } } /* * 对于二维数组,每个元素是一个一维数组。 * 双层for循环,外层行、内层列方式遍历; 每输出一行后,换行。 * 每一行上的元素数量

Siam FCN Reading

落花浮王杯 提交于 2020-02-29 16:41:21
/*--> */ /*--> */ 编辑: Yunyao Mao 审订: Qiqi Zhou 1. 问题描述: 跟踪视频中任意的一个目标. 该目标在视频第一帧被一个矩形框标出. 2. 前人工作: 利用待跟踪的视频, 用在线方式学习表观模型(appearance model). ——只能学习到相对简单的模型 利用在相关的任务中预训练得到的深度卷积神经网络: shadow method: ——不能充分的发挥 end-to-end 训练的优势. SGD 微调: ——需要在待跟踪视频上执行 SGD 算法来微调参数, 无法达到实时性的要求. 3. 这篇文章: 利用孪生网络进行相似性学习 训练一个 Siamese 网络, 利用相似性计算来实现在搜索图片( search image )上定位范例图片( exemplar image ). 训练图片: 从被标注的视频( 每帧中的目标都被 bounding box 框出 )中获取用于训练的图片对, 两张图片的帧间隔小于T. search image: 以目标为中心的大小为255*255的图片, 超出原图的区域用合理的RGB值填充, 不对原图进行缩放. exemplar image: 以目标为中心的大小为127*127的图片. 具体地, 若 bounding box(红色框) 的大小为 (w, h), padding 的大小为 p, 则调整因子 s

word2vec

不打扰是莪最后的温柔 提交于 2020-02-29 01:50:52
1.词编码需要满足的几个条件:   保证词的相似性   向量空间分布的相似性   向量空间子结构(男人女人 国王女王) 2.计算机中表示一个词:   字典表示的话:不能分辨细节差异,需要大量认为劳动,主观,无法发现新词,很难精确凭借词之间的相似度   离散表示:one hot encoding (bag of words | set of words)   词权重也可以用TF-IDF计算出来。   但是使用这种方式表示的缺点是不能描述词语之间的关系,所以这里就会设计语言模型。N-gram model 3.N-gram      但是会带来 词表急剧扩张,sparse的问题。   语言模型:    4.离散表示的缺点:    5.分布式表示(Distributed representation)    接下来核心来了 nlp总最有创建的想法之一:用一个词附近的词来表示该词 那么怎么描述词附近的词呢?共现矩阵 6.共现矩阵      如果将共现矩阵的行列向量当做他的向量表示,容易带来的问题:      可以使用SVD降维,但是对于n * n的矩阵,使用svd降维的话,复杂度为n*3,所以计算量太大。    7.NNLM(Neural Network Language Model)   未完待续...    http://blog.csdn.net/itplus/article

qsort库函数,刷题利器

时光总嘲笑我的痴心妄想 提交于 2020-02-28 22:16:04
之前刷过一些leetcode算法题,挺痛苦的,毕竟用的C语言。其中很大一部分题都是考察数组和字符串。 刷题中得到一个经验,遇见数组先考虑排序,排序就选qsort。那现在就总结写qsort的几个不同情况。 先看下qsort的函数原型,要记住qsort的四个参数,还有compare函数的两个参数。 /*参数 base-- 指向要排序的数组的第一个元素的指针。 nitems-- 由 base 指向的数组中元素的个数。 size-- 数组中每个元素的大小,以字节为单位。 compar-- 用来比较两个元素的函数,即函数指针(回调函数) */ void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) /* 注意compar函数两个形参必须是const void *型 在compar函数内部会将const void *型转换成实际类型。 */ int compar(const void *p1, const void *p2); /* 如果compar返回值小于0(< 0),那么p1所指向元素会被排在p2所指向元素的左面;   如果compar返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定;   如果compar返回值大于0(> 0)

基础训练 回形取数(模拟法)

拜拜、爱过 提交于 2020-02-28 21:13:47
Description 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 Input 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 Output 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 Sample Input 1 3 3 1 2 3 4 5 6 7 8 9 Sample Output 1 1 4 7 8 9 6 3 2 5 别问,问就是模拟法 模拟法 1 # include <iostream> # include <string.h> using namespace std ; int main ( ) { int map [ 200 ] [ 200 ] ; bool flag [ 200 ] [ 200 ] ; memset ( flag , true , sizeof ( flag ) ) ; int m , n ; cin >> m >> n ; for ( int i = 0 ; i < m ; i ++ ) { for ( int j = 0 ; j < n ; j ++ ) { cin >> map [ i ] [ j ] ; } } int i = 0 , j = 0 ; int a =

量化投资学习笔记28——《Python机器学习应用》课程笔记02

时光怂恿深爱的人放手 提交于 2020-02-28 19:48:53
降维 PCA算法及其应用 主成分分析(PCA),通常用于高维数据的探索与可视化。可以拔具有相关性的高维变量转化为线性无关的低维变量。称为主成分,能够尽可能保存原始数据的信息。 几个概念 方差:样本与样本均值的差的平方和的均值,用来度量一组数据的分散程度。 协方差:用于度量两个变量的线性相关程度。 特征向量:描述数据集结构的非零向量。 原理:矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应特征值排序,分为第一主成分,第二主成分,以此类推。 在sklearn中使用decomposition模块中的PCA进行降维。 实例,用PCA将鸢尾花数据进行降维,可视化。 代码见: https://github.com/zwdnet/MyQuant/blob/master/26/PCAtest.py 非负矩阵分解(NMF) 是在矩阵中所有元素均为非负数约束条件下的矩阵分解方法。 基本思想:给定一个非负矩阵V,NMF能够找到一个非负矩阵W和一个非负矩阵H,使得二者的乘积近似等于矩阵V中的值。 W矩阵,从原矩阵V中提取的特征。 H矩阵,系数矩阵。 分解目标,最小化W与H乘积与V的差异。 在sklearn中使用decomposition模块中的NMF进行分解。 实例,用NMF进行人脸图像数据集Olivetti特征提取。 代码见: https://github.com/zwdnet/MyQuant

斯坦福大学机器学习课程第一周笔记

你。 提交于 2020-02-28 19:26:53
课程地址: https://www.coursera.org/learn/machine-learning/home/welcome 简记 机器学习mechine learning 监督学习Supervised learning 回归问题regression problem 分类问题classification problem 无监督学习Unsupervised learning 聚类问题clustering 非聚类non-clustering 线性回归linear regression 代价函数cost function 梯度下降算法gradient descent---第一个算法 线性代数知识 矩阵matrix 矩阵加addition 实数矩阵乘scalar Multipliction 矩阵矩阵乘matrix matrix multipliction 向量vector 矩阵标量乘matrix vector multipliction 标量identity matrix 方阵square matrix 奇异矩阵singular/退化矩阵degenerate 逆矩阵inverse 转置矩阵transponse 乘法性质 不符合交换律和结合律(除标量外) 来源: https://www.cnblogs.com/ephemerid/p/10838329.html