矩阵

深度学习-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大小的图像,但是这可以通过一些基本的图像处理方法,如金字塔来提升生成图像的分辨率

矩阵相关

泪湿孤枕 提交于 2019-12-05 13:55:48
矩阵的正态分布、协方差求法 https://blog.csdn.net/duanyule_cqu/article/details/54959897 来源: https://www.cnblogs.com/caiweijun/p/11926381.html

AI-图像基础知识-02

痞子三分冷 提交于 2019-12-05 12:32:01
目录 图像坐标系 图像数字化 图像坐标系     在前面的数据标注文章中讲述如何进行标注,而标注后会保留4个坐标点,那么这些坐标点如何表示在图片中的位置?要表示一个点或图形的位置,就需要涉及到坐标系的概念。今天就来了解一下图像的坐标系。一般大家首先接触到的坐标系应该是的笛卡尔坐标系,如下所示:     如下图所示,是以图像左上角为原点建立的以像素为单位的直角坐标系 u-v 。其横坐标u与纵坐标v分别是在其图像数组中所在的列数和行数。 以上坐标在OpenCV中,u对应 x , v对应 y     由于 (u,v) 只代表像素的列数与行数,而像素在图像中的位置并没有用物理单位表示出来,所以还要建立以物理单位(如毫米)表示的图像坐标系x-y。将相机光轴与图像平面的交点(一般位于图像平面的中心处,也称为图像的主点(principal point)定义为该坐标系的原点O1,且x轴与u轴平行,y轴与v轴平行,假设(u0,v0)代表O1在u-v坐标系下的坐标,dx与dy分别表示每个像素在横轴x和纵轴y上的物理尺寸,则图像中的每个像素在u-v坐标系中的坐标和在x-y坐标系中的坐标之间都存在如下的关系: 上述公式中我们假设物理坐标系统中的单位为mm,则dx的单位为mm/px,而x/dx的单位则是px.     为使用方便,一般常用齐次坐标与矩阵形式表示为:     以上知识可能比较难懂

线性代数之——SVD 分解

橙三吉。 提交于 2019-12-05 12:23:36
SVD 分解是线性代数的一大亮点。 1. SVD 分解 \(A\) 是任意的 \(m×n\) 矩阵,它的秩为 \(r\) ,我们要对其进行对角化,但不是通过 \(S^{-1}A S\) 。 \(S\) 中的特征向量有三个大问题:它们通常不是正交的;并不总是有足够的特征向量; \(Ax=\lambda x\) 需要 \(A\) 是一个方阵。 \(A\) 的奇异向量很好地解决了上述所有问题。 代价是我们需要两组奇异向量,一组是 \(\boldsymbol{u}\) , 一组是 \(\boldsymbol{v}\) 。 \(\boldsymbol{u}\) 是 \(AA^T\) 的特征向量, \(\boldsymbol{v}\) 是 \(A^TA\) 的特征向量,因为这两个矩阵都是对称矩阵,我们可以选出一组标准正交的特征向量。即: \[AA^T=U\Sigma^2U^T \quad A^TA =V\Sigma^2V^T\] 证明: 让我们从 \(A^TAv_i=\sigma_i^2v_i\) 开始,两边同乘以 \(v_i^T\) ,有: \[v_i^TA^TAv_i=\sigma_i^2v_i^Tv_i=\sigma_i^2 \to ||Av_i||=\sigma_i\] 这说明向量 \(Av_i\) 的长度为 \(\sigma_i\) 。然后两边同乘以 \(A\) ,有: \[AA^T

numpy基本使用

我的梦境 提交于 2019-12-05 11:01:29
轴 axis 正常情况 0 行, 1 列 聚合函数 0列, 1 行 import numpy as np np.__version__ #查看numpy版本 一.创建ndarray 1.使用np.array()由python list创建 l = [1,4,2,5,6] n = np.array(l) 注意: numpy默认ndarray的所有元素的类型是相同的 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int 2. 使用np的routines函数创建 1) np.ones(shape, dtype=None, order="C") 用来产生全是1的ndarray shape是用来指定ndarray的形状 dtype是数字的类型 例如: np.ones(shape=(7,7), dtype=np.int8) 2) np.zeros(shape, dtype=float, order='C') 用来产生全是0的ndarray 例如: np.zeros(shape=(7,7), dtype=np.float32) 3) np.full(shape, fill_value, dtype=None, order='C') 按照指定数字产生ndarray 例如: np.full(shape=(8,8), fill_value=8.) 4) np.eye

推荐算法之用矩阵分解做协调过滤——LFM模型

故事扮演 提交于 2019-12-05 10:59:53
隐语义模型(Latent factor model,以下简称 LFM ),是推荐系统领域上广泛使用的算法。它 将矩阵分解应用于推荐算法推到了新的高度 ,在推荐算法历史上留下了光辉灿烂的一笔。本文将对 LFM 原理进行详细阐述,给出其基本算法原理。此外,还将介绍使得隐语义模型声名大噪的算法 FunkSVD 和在其基础上改进较为成功的 BiasSVD 。最后,对 LFM 进行一个较为全面的总结。 1. 矩阵分解应用于推荐算法要解决的问题 在推荐系统中,我们经常可能面临的场景是:现有大量用户和物品,以及少部分用户对少部分物品的评分,我们需要使用现有的用户对少部分物品的评分去推测用户对物品集中其他物品的可能的评分,从而将预测中评分高的物品推荐给用户。例如下面的用户物品评分表: 用户\物品 物品 1 物品 2 物品 3 物品 4 物品 5 用户 1 3 2 用户 2 1 2 6 用户 3 3 4 6 用户 4 1 2 5 用户 5 4 2 3 对于每个用户,我们希望较准确的预测出其对未评分物品的评分。将m个用户和n个物品的评分看做一个矩阵 M ,从而将矩阵分解应用到该场景,即可解决这一问题。而本文,将关注于矩阵分解用于到推荐的方法之一,即 LFM 算法的解决方案。 2. LFM LFM 算法的核心思想是通过隐含特征(Latent factor)联系用户和物品

线性代数之——相似矩阵

那年仲夏 提交于 2019-12-05 10:54:28
当 \(A\) 有足够的特征向量的时候,我们有 \(S^{-1}AS=\Lambda\) 。在这部分, \(S\) 仍然是最好的选择,但现在我们允许任意可逆矩阵 \(M\) ,矩阵 \(A\) 和 \(M^{-1}AM\) 称为 相似矩阵 ,并且不管选择哪个 \(M\) ,特征值都保持不变。 1. 相似矩阵 假设 \(M\) 是任意的可逆矩阵,那么 \(B = M^{-1}AM\) 相似于矩阵 \(A\) 。 \[B = M^{-1}AM \to A = MBM^{-1}\] 也就是说如果 \(B\) 相似于 \(A\) ,那么 \(A\) 也相似于 \(B\) 。如果 \(A\) 可以对角化,那么 \(A\) 相似于 \(\Lambda\) ,它们肯定具有相同的特征值。 相似的矩阵 \(A\) 和 \(M^{-1}AM\) 具有相同的特征值,如果 \(x\) 是 \(A\) 的一个特征向量,那么 \(M^{-1}x\) 是 \(B = M^{-1}AM\) 的特征向量。 \[Ax=\lambda x \to MBM^{-1}x=\lambda x \to B(M^{-1}x)=\lambda (M^{-1}x)\] 所有具有特征值 1 和 0 的 2×2 矩阵都是相似的,特征向量会随着 \(M\) 而改变,但特征值不变。上面的例子中特征值是不重复的,这种情况很好办

线性代数之——正定矩阵

五迷三道 提交于 2019-12-05 10:52:35
这部分我们关注有正特征值的对称矩阵。如果对称性使得一个矩阵重要,那么所有特征值大于零这个额外属性则让这个矩阵真正特殊。但我们这里的特殊并不是稀少,事实上在各种应用中具有正特征值的对称矩阵非常常见,它们被称作 正定矩阵 。 我们可以通过检查特征值是否大于零来识别正定矩阵,但计算特征值是一项工作,当我们真正需要它们的时候我们可以进行计算,而如果我们仅仅想知道它们是否是正的,我们有更快的方式。 1. 正定矩阵的判断 首先,由于矩阵是对称的,所有的特征值自然都是实数。让我们以一个 2×2 的矩阵开始, \[A = \begin{bmatrix} a&b \\b&c\end{bmatrix}\] A 的特征值是正的当且仅当 \(a > 0\) 并且 \(ac-b^2>0\) 。 如果 2×2 矩阵的特征值 \(\lambda_1>0\) , \(\lambda_2>0\) ,那么它们的乘积等于行列式, \(\lambda_1\lambda_2=|A|=ac-b^2>0\) ,它们的和等于矩阵的迹, \(\lambda_1+\lambda_2=a+c>0\) ,所以 \(a\) 和 \(c\) 都必须是正的。 A 的特征值是正的当且仅当主元是正的。 这连接了线性代数的两大部分, 正的特征值意味着正的主元,反之亦然 。而且,主元往往比特征值计算得更快。 基于能量的定义 \[Ax=\lambda

tensorflow DCGAN 源码中 conv_cond_concat函数

落爺英雄遲暮 提交于 2019-12-05 10:27:29
源码地址: https://github.com/carpedm20/DCGAN-tensorflow 今天看了源码中,再debug调试时看到了conv_cond_concat这个函数,第一反应就是应该与tf.concat有关系,看了源码确实是。 以下是函数定义: def conv_cond_concat(x, y): """Concatenate conditioning vector on feature map axis.""" x_shapes = x.get_shape() y_shapes = y.get_shape() return concat([ x, y*tf.ones([x_shapes[0], x_shapes[1], x_shapes[2], y_shapes[3]])], 3) 这里面有 y*tf.ones([x_shapes[0], x_shapes[1], x_shapes[2], y_shapes[3]])] 得注意一下,这个是tensorflow中的乘法表示,tf.ones是全1的矩阵。 这个单独测试一下,看效果比较直观: #!/usr/bin/env python #coding:utf8 import os,sys import numpy as np import tensorflow as tf y=tf.ones([1,1,3]) y