求导

深度学习

六眼飞鱼酱① 提交于 2020-01-25 19:06:04
神经网络中激活函数的作用: a. 不使用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。 b. 使用激活函数,能够给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以利用到更多的非线性模型中。 激活函数需要具备以下几点性质: 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参 数。 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。 Caffe Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口; 可以在CPU和GPU直接无缝换:Caffe::set_mode(Caffe::GPU); 在Caffe中图层需要使用C++定义,而网络则使用Protobuf定义。Caffe是一个深度卷积神经网络的学习框架,使用Caffe可以比较方便地进行CNN模型的训练和测试,精于CV领域。 Caffe作为快速开发和工程应用是非常适合的。caffe官方提供了大量examples,照着examples写,caffe只要求会写prototxt就行,它的训练过程、梯度下降算法等等都实现封装好了,懂了prototxt的语法了,基本就能自己构造神经网络了。

RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead

橙三吉。 提交于 2020-01-24 07:18:29
welcome to my blog 问题描述 我想将pytorch的计算结果赋值给numpy array, S[i, v] = torch.div(row_res, row_sum) , 其中S是numpy array, 结果报错RuntimeError: Can’t call numpy() on Variable that requires grad. Use var.detach().numpy() instead, 意思是: 需要求导的变量无法调用numpy()方法 解决方法 既然报错信息说需要求导的变量无法调用numpy()方法, 那就将变量变为不需要求导的即可, 调用 detach() 方法即可使得变量不需要求导, 重新执行 S[i, v] = torch.div(row_res, row_sum).detach() , 不再报错, 成功解决 上面的解决方法适用于不求导的变量, 如果变量需要求导呢? 另一种解决办法, 将S转成Tensor, 这样就不用在numpy array和Tensor中来回转换了, 同时也能指定变量是否需要求导 刚上手pytorch, 还不熟悉 来源: CSDN 作者: littlehaes 链接: https://blog.csdn.net/littlehaes/article/details/103801007

Pytorch常用包

偶尔善良 提交于 2020-01-23 20:14:08
torch:张量的有关运算。如创建、索引、连接、转置、加减乘除、切片等 torch.nn: 包含搭建神经网络层的模块(Modules)和一系列loss函数。如全连接、卷积、BN批处理、dropout、CrossEntryLoss、MSELoss等 torch.nn.functional:常用的激活函数relu、leaky_relu、sigmoid等 torch.autograd:提供Tensor所有操作的自动求导方法 torch.optim:各种参数优化方法,例如SGD、AdaGrad、Adam、RMSProp等 torch.utils.data:用于加载数据 torch.nn.init:可以用它更改nn.Module的默认参数初始化方式 torchvision.datasets:常用数据集。MNIST、COCO、CIFAR10、Imagenet等 torchvision.modules:常用模型。AlexNet、VGG、ResNet、DenseNet等 torchvision.transforms:图片相关处理。裁剪、尺寸缩放、归一化等 -torchvision.utils:将给定的Tensor保存成image文件 来源: CSDN 作者: 立志正常毕业的二狗子 链接: https://blog.csdn.net/qq_43270479/article/details

PAT_B1010 | 一元多项式求导

扶醉桌前 提交于 2020-01-22 00:25:19
1010 一元多项式求导 (25分) 设计函数求一元多项式的导数。(注:x​n​​(n为整数)的一阶导数为nx​n−1​​。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0 。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 就是一道简单的模拟题,没啥好讲的。 不过,emmmmm这道题简直不能太坑,卡了我快一个多小时。 说几个 错误点 吧: 1、 当求导后整个多项式为零时,应该输出0 0 2、当求导完某一项为零,则不输出该项结果 3、输出的末尾不要有空格 直接上代码 // // Created by LittleCat on 2020/1/20. // #include <iostream> int main() { int x, y; int flag = 0; int first = 1; while (EOF != scanf("%d%d", &x, &y)) { if(!y) continue; flag = 1; if(first) { printf("%d %d", x * y, y -1); first

矩阵求导

本小妞迷上赌 提交于 2020-01-18 13:49:04
文章目录 矩阵求导 向量对向量求导 标量对向量求导 几个常见的 矩阵求导 我喜欢Denominator layout 哼 向量对向量求导 ∂ A x ∂ x = A T \frac{\partial{\pmb{A}}{\pmb{x}}}{\partial{\pmb{x}}}=\pmb{A}^T ∂ x x x ∂ A A A x x x ​ = A A A T ∂ x T A ∂ x = A \frac{\partial{\pmb{x}^T}{\pmb{A}}}{\partial{\pmb{x}}}=\pmb{A} ∂ x x x ∂ x x x T A A A ​ = A A A 标量对向量求导 几个常见的 来源: CSDN 作者: fgh431 链接: https://blog.csdn.net/zhoutianzi12/article/details/104027928

高数-函数求导

ぃ、小莉子 提交于 2020-01-15 12:55:59
一阶函数求导: 二阶函数求导: y=x²的 导数 为y'=2x,二阶导数即y'=2x的导数为y''=2 来源: CSDN 作者: wun123 链接: https://blog.csdn.net/wun123/article/details/103984155

7-16 一元多项式求导 (20分)

一笑奈何 提交于 2020-01-15 01:06:29
问题描述 设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 代码实现 # include <bits/stdc++.h> using namespace std ; /************************************************ number(map)存储系数和指数 key-指数 value-系数 按指数从大到小排序 **NOTE: 如果系数只有0项,要输出“0 0”** ************************************************/ int main ( ) { map < int , int , greater < int > > number ; int coef , exp ; while ( scanf ( "%d%d" , & coef , & exp ) != EOF ) number . insert ( pair < int , int > ( exp , coef ) ) ; map < int , int >

高等数学——变限积分求导

橙三吉。 提交于 2020-01-14 15:52:43
类型1、下限为常数,上限为函数类型 第一步:对于这种类型只需将上限函数代入到积分的原函数中去,再对上限函数进行求导。 第二步:对下面的函数进行求导,只需将“X”替换为“t”再进求导即可。 类型2、下限为函数,上限为常数类型 第一步:基本类型如下图,需要添加“负号”将下限的函数转换到上限,再按第一种类型进行求导即可。 第二步:题例如下,添加“负号”转换为变上限积分函数求导即可。 类型3、上下限均为函数类型 第一步:这种情况需要将其分为两个定积分来求导,因为原函数是连续可导的,所以首先通过“0”将区间[h(x),g(x)]分为[h(x),0]和[0,g(x)]两个区间来进行求导。 第二步:然后将后面的变下限积分求导转换为变上限积分求导。 第三步:接着对两个区间的变上限积分分别求导即可得到下面公式。 第四步:对于这种题,可以直接套公式,也可以自己推导。 总结 : 对于变限积分求导,通常将其转换为变上限积分求导,求导时,将上限的变量代入到被积函数中去,再对变量求导即可。 扩展资料 : 众所周知,微积分的两大部分是微分与积分。微分实际上是函数的微小的增量,函数在某一点的导数值乘以自变量以这点为起点的增量,得到的就是函数的微分;它近似等于函数的实际增量(这里主要是针对一元函数而言)。 而积分是已知一函数的导数,求这一函数。 所以,微分与积分互为逆运算。 实际上,积分还可以分为两部分。第一种

机器学习相关参考

混江龙づ霸主 提交于 2020-01-14 05:30:23
特征工程相关 特征选择 特证工程学习笔记 Feature-Engineering中文版 缺失值填充方法 机器学习_数据处理及模型评估相关资料 训练模型填充空值(fill null)的几种方法 范数 0范数,1范数,2范数的几何意义 机器学习中的范数规则化之(一)L0、L1与L2范数 矩阵 Matrix calculus(矩阵微积分)关于矩阵求导 如何理解相似矩阵 矩阵求导术(上) 矩阵求导术(下) 孟岩的理解矩阵(一)(二)(三)(辅助理解) https://blog.csdn.net/myan/article/details/647511 https://blog.csdn.net/myan/article/details/649018 https://blog.csdn.net/myan/article/details/1865397 如何理解矩阵特征值 奇异值分解SVD 矩阵求导、几种重要的矩阵及常用的矩阵求导公式 Scalar-by-vector identities 高数&算法 马同学高等数学 牛顿法 逻辑回归 深入理解SVM之对偶问题 EM算法 支持向量机(强烈推荐) others 西瓜书第3,6,10详细讲解 来源: CSDN 作者: whime_sakura 链接: https://blog.csdn.net/whimewcm/article/details

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