矩阵乘法

动态规划之——最长公共子串和矩阵链乘法

拜拜、爱过 提交于 2019-12-06 14:52:06
1. 最长公共子串 最长公共子串与最长公共子序列有一些类似,只不过这里子串要求是连续的。 这里我们定义 lcs[i][j] 表示 以 s[i] 与 t[j] 为末尾元素 的最长公共子串长度,那么我们有: \[lcs[i][j] = \begin{cases} lcs[i-1][j-1]+1 &\text{如果 } s[i] == t[j] \\ 0 &\text{如果 } s[i] != t[j] \end{cases}\] import numpy as np s = 'mitcmu' t = 'mtacmu' def longest_commom_substr(s, t): m = len(s) n = len(t) lcs = np.zeros((m, n), 'uint8') max_lcs = 0 for i in range(0, n): if s[0] == t[i]: lcs[0][i] = 1 else: lcs[0][i] = 0 for i in range(0, m): if s[i] == t[0]: lcs[i][0] = 1 else: lcs[i][0] = 0 for i in range(1, m): for j in range(1, n): if s[i] == t[j]: lcs[i][j] = lcs[i-1][j-1] + 1 max

poj 3070 矩阵计算Fibonacci

依然范特西╮ 提交于 2019-12-06 14:33:59
地址 http://poj.org/problem?id=3070 大意是输入一个数字 输出位于Fibonacci数列该位置的数字模10000的结果 由于n比较大 0 ≤ n ≤ 1,000,000,000 所以开数组是不可能了 只能实时计算 使用矩阵可以加速Fibonacci数列的推导 经过精心设置的矩阵相乘是可以从Fn-1 Fn-2推导出Fn的 那么设置好的矩阵的多次相乘是不是就可以从F0 F1推到出Fn呢? 是的 如图 1 1 1 0 矩阵为A那么 A^(n-1) 与F1 F0矩阵的乘法就是可以推到出 Fn 代码借用了之前的快速幂代码 不是模板 所以虽然可以AC但是代码复用性不好 先学理论 板子日后再找 1 #include <iostream> 2 #include <vector> 3 #include <cstring> 4 5 using namespace std; 6 7 struct matrix { 8 int data[35][35]; 9 }; 10 11 int n = 2; 12 int m = 10000; 13 int k = 0; 14 15 //矩阵乘法 16 matrix mul(matrix a, matrix b) 17 { 18 matrix c; 19 memset(c.data, 0, sizeof(c.data)); 20 for

C++面向程序设计(第二版)课后习题答案解析

怎甘沉沦 提交于 2019-12-06 11:06:51
最近没什么心情整理零散的知识点,就整理一下第四章的课后习题答案。 1.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员函数,非友元的普通函数。编程序,求两个复数之和。 源代码: 1 #include <iostream> 2 #include<stdlib.h> 3 using namespace std; 4 class Complex 5 {public: 6 Complex(){real=0;imag=0;} 7 Complex(double r,double i){real=r;imag=i;} 8 double get_real();//获取实部函数 9 double get_imag();//获取虚部函数 10 void display();//显示函数 11 private: 12 double real; 13 double imag; 14 }; 15 16 //实现具体的函数 17 double Complex::get_real() 18 { 19 return real; 20 } 21 double Complex::get_imag() 22 { 23 return imag; 24 } 25 void Complex::display() 26 { 27 cout<<"("<<real<<","<

[04-00]单变量线性回归问题

血红的双手。 提交于 2019-12-06 10:06:41
系列博客,原文在笔者所维护的github上: https://aka.ms/beginnerAI , 点击star加星不要吝啬,星越多笔者越努力。 第4章 单入单出的单层神经网络 4.0 单变量线性回归问题 4.0.1 提出问题 在互联网建设初期,各大运营商需要解决的问题就是保证服务器所在的机房的温度常年保持在23摄氏度左右。在一个新建的机房里,如果计划部署346台服务器,我们如何配置空调的最大功率? 这个问题虽然能通过热力学计算得到公式,但是总会有误差。因此人们往往会在机房里装一个温控器,来控制空调的开关或者风扇的转速或者制冷能力,其中最大制冷能力是一个关键性的数值。更先进的做法是直接把机房建在海底,用隔离的海水循环降低空气温度的方式来冷却。 通过一些统计数据(称为样本数据),我们得到了表4-1。 表4-1 样本数据 样本序号 服务器数量(千台)X 空调功率(千瓦)Y 1 0.928 4.824 2 0.469 2.950 3 0.855 4.643 ... ... ... 在上面的样本中,我们一般把自变量X称为样本特征值,把因变量Y称为样本标签值。 这个数据是二维的,所以我们可以用可视化的方式来展示,横坐标是服务器数量,纵坐标是空调功率,如图4-1所示。 图4-1 样本数据可视化 通过对上图的观察,我们可以判断它属于一个线性回归问题,而且是最简单的一元线性回归。于是

宽度学习(Broad Learning System)

坚强是说给别人听的谎言 提交于 2019-12-06 09:50:43
宽度学习(Broad Learning System) 2018-09-27 19:58:01 颹蕭蕭 阅读数 10498 收藏 文章标签: 宽度学习 BL BLS 机器学习 陈俊龙 更多 分类专栏: 机器学习 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/itnerd/article/details/82871734 一、宽度学习的前世今生 宽度学习系统(BLS) 一词的提出源于澳门大学科技学院院长 陈俊龙 和其学生于2018年1月发表在 IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS,VOL. 29, NO. 1 的一篇文章,题目叫 《Broad Learning System: An Effective and Efficient Incremental Learning System Without the Need for Deep Architecture 》 。文章的主旨十分明显,就是提出了一种可以和深度学习媲美的宽度学习框架。 为什么要提出宽度学习? 众所周知,深度学习中最让人头疼之处在于其数量庞大的待优化参数,通常需要耗费大量的时间和机器资源来进行优化。

机器学习:数据清洗和特征选择

孤街醉人 提交于 2019-12-06 07:01:23
数据清洗和特征选择 数据清洗 清洗过程 数据预处理: 选择数据处理工具:数据库、Python相应的包; 查看数据的元数据及数据特征; 清理异常样本数据: 处理格式或者内容错误的数据; 处理逻辑错误数据:数据去重,去除/替换不合理的值,去除/重构不可靠的字段值; 处理不需要的数据:在进行该过程时,要注意备份原始数据; 处理关联性验证错误的数据:常应用于多数据源合并的过程中。 采样: 数据不均衡处理:上采样、下采样、SMOTE算法 样本的权重问题 数据不平衡 在实际应用中,数据的分布往往是不均匀的,会出现"长尾现象",即绝大多数的数据在一个范围/属于一个类别,而在另外一个范围或者类别中,只有很少一部分数据。此时直接采用机器学习效果不会很好,因此需要对数据进行转换操作。 长尾效应: 解决方案01 设置损失函数的权重, 使得少数类别数据判断错误的损失大于多数类别数据判断错误的损失 ,即:当我们的少数类别数据预测错误的时候,会产生一个比较大的损失值,从而导致模型参数往让少数类别数据预测准确的方向偏。 可通过设置sklearn中的class_weight参数来设置权重。 解决方案02 下采样/欠采样(under sampling): 从多数类中随机抽取样本从而减少多数类别样本数据 ,使数据达到平衡的方式。 集成下采样/欠采样:采用普通的下采样方式会导致信息丢失

Numpy 常用API学习(全)

北慕城南 提交于 2019-12-06 04:59:33
Numpy 常用API学习(全) 一、介绍 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。 二、常用API 2.1.numpy.genfromtxt 从文本上读取相应的矩阵数据,delimiter是分隔符 import numpy​data = numpy.genfromtxt("data.txt",dtype=str,delimiter=",")​print(data)print(type(data))print(help(numpy.genfromtxt)) 2.2.numpy.array 将列表转换为矩阵 vector = numpy.array([5,10,15,20])matrix = numpy.array([[5,10,15],[20,25,30],[35,40,45]])print(vector)print(matrix) 2.3.vector

矩阵结合律的证明-2019.11.29

半世苍凉 提交于 2019-12-06 02:57:57
学习日志—矩阵 矩阵的乘法 证明矩阵乘法的结合律,即证A(BC)=(AB)C 先令出三个矩阵 A_{m n}; B_{n p}; C_(p*q) 先看等式右边(AB)C 新矩阵第i行第j列的元素就是AB相乘后的第i行与C的第j列各元素相乘的和 A的第i行乘以B的第1列如下: \begin{equation} \left[ \begin{array}{cccc} a_{i1} & a_{i2} & … & a_{in} \end{array} \right ] \left[ \begin{array}{c} b_{11}\ b_{12}\ ... \ b_{1n} \end{array} \right ] \end{equation} 所以AB的第i行的n个元素就是A的第i行乘上B的每一列。(AB)C的第(i,j)个元素计算如下: \begin{equation} (AB)C_{(i,j)} = (\sum_{r=1}^n a_{ir}b_{r1}, \sum_{r=1}^n a_{ir}b_{r2}, …, \sum_{r=1}^n a_{ir}b_{rp}) \left( \begin{array}{c} c_{1j}\ c_{2j}\ …\ c_{rj} \end{array} \right) \ =c_{1j}(\sum_{r=1}^n a_{ij}b_{ij})+ c_

均值、方差、协方差、协方差矩阵、特征值、特征向量

末鹿安然 提交于 2019-12-05 17:55:02
均值: 描述的是样本集合的中间点。 方差: 描述的是样本集合的各个样本点到均值的距离之平均,一般是用来描述一维数据的。 协方差: 是一种用来度量两个随机变量关系的统计量。 只能处理二维问题。 计算协方差需要计算均值。 如下式: 方差与协方差的关系 方差是用来度量单个变量 “ 自身变异”大小的总体参数,方差越大表明该变量的变异越大 协方差是用来度量两个变量之间 “协同变异”大小的总体参数,即二个变量相互影响大小的参数,协方差的绝对值越大,则二个变量相互影响越大。 协方差矩阵: 协方差矩阵能处理多维问题; 协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。 协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。 样本矩阵中若每行是一个样本,则每列为一个维度,所以计算协方差时要 按列计算均值 。 如果数据是3维,那么协方差矩阵是: 特征值与 特征向量 线性变化: 线性变换 (线性映射)是在作用于 两个向量空间之间的函数 ,它保持 向量加法和标量乘法 的运算,从一个向量空间变化到另一个向量空间。 实际上线性变换表现出来的就是一个矩阵 。 特征值和特征向量 是一体的概念: 对于一个给定的线性变换(矩阵A),它的特征向量 ξ 经过这个线性变换之后,得到的新向量仍然与原来的 ξ 保持在同一條直線上,但其长度也许會改变。一个特征向量的长度在该线性变换下缩放的比例(λ)称为其特征值

深度学习-DCGAN论文的理解笔记

泪湿孤枕 提交于 2019-12-05 16:53:29
训练方法 DCGAN 的训练方法跟GAN 是一样的,分为以下三步: (1)for k steps:训练D 让式子[logD(x) + log(1 - D(G(z)) (G keeps still)]的值达到最大 (2)保持D 不变,训练G 使式子[logD(G(z))]的值达到最大 (3)重复step(1)和step(2)直到G 与D 达到纳什均衡 Alec Radford等人于2016年初提出DCGAN以改善GAN的可训练性。他们认为传统GAN之所以不稳定,一个原因便是判别器D搭载的是初级的多层感知机模型,为了将火热的CNN纳入GAN的体系中,作者将多层感知机用CNN进行替换,并做了如下改进:  1 将池化层用stride=1stride=1的卷积层代替 2 将输给生成器G的100维噪声映射为四维张量用作CNN输入而不是向量 3 每进行一次卷积操作就进行批规一化(Batch Normalization) 4 使用ReLU层替换传统的Sigmoid函数,并对输出层使用Tanh激活 5 对判别器D使用LeakyReLU函数作为激活函数 6 移除所有全连接层   在以上改进的支撑下,论文给出了生成器G的网络结构:     经实验验证,该模型生成的图像较为稳定,虽然只能生成64*64大小的图像,但是这可以通过一些基本的图像处理方法,如金字塔来提升生成图像的分辨率