randn

深度学习调参策略(一)

走远了吗. 提交于 2019-11-28 05:17:24
经常会被问到你用 深度学习 训练模型时怎么样改善你的结果呢?然后每次都懵逼了,一是自己懂的不多,二是实验的不多,三是记性不行忘记了。所以写这篇博客,记录下别人以及自己的一些经验。 Ilya Sutskever(Hinton的学生)讲述了有关深度学习的见解及实用建议: 获取数据:确保要有高质量的输入/输出数据集,这个数据集要足够大、具有代表性以及拥有相对清楚的标签。缺乏数据集是很难成功的。 预处理:将数据进行集中是非常重要的,也就是要使数据均值为0,从而使每个维度的每次变动为1。有时,当输入的维度随量级排序变化时,最好使用那个维度的log(1+x)。基本上,重要的是要找到一个0值的可信编码以及自然分界的维度。这样做可使学习工作得更好。情况就是这样的,因为权值是通过公式来更新的:wij中的变化 \propto xidL/dyj(w表示从层x到层y的权值,L是损失函数)。如果x的均值很大(例如100),那么权值的更新将会非常大,并且是相互关联的,这使得学习变得低劣而缓慢。保持0均值和较小的方差是成功的关键因素。 批处理:在如今的计算机上每次只执行一个训练样本是很低效的。反之如果进行的是128个例子的批处理,效率将大幅提高,因为其输出量是非常可观的。事实上使用数量级为1的批处理效果不错,这不仅可获得性能的提升同时可降低过度拟合;不过这有可能会被大型批处理超越。但不要使用过大的批处理

matlab学习 创建特殊矩阵(magic, pascal, vander, rand, randn, hilb, rosser, hadamard)

佐手、 提交于 2019-11-28 00:49:44
clear all clc format compact a=hadamard(2) b=rosser c=hilb(4) d=invhilb(4) e=c*d % cd可逆 f=toeplitz(2:5,2:1:6) % 输入列和第一个元素必须和输入行的第一个元素相同,否则会报错 g=toeplitz(2:5) % 对称 a = 1 1 1 -1 b = 611 196 -192 407 -8 -52 -49 29 196 899 113 -192 -71 -43 -8 -44 -192 113 899 196 61 49 8 52 407 -192 196 611 8 44 59 -23 -8 -71 61 8 411 -599 208 208 -52 -43 49 44 -599 411 208 208 -49 -8 8 59 208 208 99 -911 29 -44 52 -23 208 208 -911 99 c = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 d = 16 -120 240 -140 -120 1200 -2700 1680 240 -2700 6480 -4200

nu.random.seed()如何理解

十年热恋 提交于 2019-11-27 19:29:16
结论: np.random.seed(a)  # 按照规定的顺序生成随机数     # 参数a指定了随机数生成的起始位置;     # 如果两处都采用了np.random.seed(a),且两处的参数a相同,则生成的随机数也相同;     # 不同的参数a执行了随机数生成的不同位置;随便选即可; 验证: 1.以np.random.randn()函数为例 import numpy as npif __name__ == '__main__': i = 0 while(i < 6): if(i < 3): np.random.seed(0) print(np.random.randn(1, 5)) # 1.打印之前都执行了np.random.seed(0),打印3组相同结果 i:[0,1,2] else: print(np.random.randn(1, 5)) # 2.接着上面随机数生成的位置,打印3组不同结果 i:[3,4,5] pass i += 1 i = 0 while(i<2): print(np.random.randn(1, 5)) # 3.接着上面随机数生成的位置,打印2组不同结果 i:[0,1] i += 1 print(np.random.randn(2, 5)) # 4.接着上面随机数生成的位置,打印1组不同结果 i:[2] print("---------

MatLab凸优化工具箱CVX-Installation

血红的双手。 提交于 2019-11-26 11:35:10
Supported platforms CVX对Linux、Mac OSX和Windows的32位、64位版本都支持。对于32位平台,要求MATLAB的版本必须是7.5(R2007b)或更新的版本。 对于64位平台,要求MATLAB的版本必须是7.8(R2009a)或更新的版本。但是,有一些重要的特定平台的警告: Gurobi需要Matlab 7.7(R2008b)或更高版本来支持。 32位Linux:Gurobi解析器不适用于该平台,因为Gurobi将完全停止支持32位Linux。 对于带有Java1.5的Mac OS X(如10.5)旧版本, CVX标准版本在此平台上可以正常工作,但CVX专业版需要Java 1.6来支持。 要恢复此支持,请升级您的操作系统或Java安装。 从版本2.0开始,已停止支持版本7.4(R2007a)或更早版本。 如果您需要在这些旧版本的Matlab上使用CVX,请使用CVX 1.22或更低版本,这些CVX无限期地保留在 CVX Research 网站上。 但是,此版本不再受支持,并且不会收到错误修复或改进。 我们强烈建议您将Matlab更新到最新版本。 注意: 如果你想在Gurobi或MOSEK上使用 CVX,在运行cvx_setup之前,必须先从MATLAB中安装并访问它们。 请参阅下面的更多细节。 1. 从 网站 上检索最新版本的CVX。