momentum

(Review cs231n) Optimized Methods

蹲街弑〆低调 提交于 2019-12-27 17:30:45
Mini-batch SGD的步骤: 1.Sample a batch of data 2.Forward prop it through the graph,get loss 3.backprop to calculate the gradient 4. updata the parameters using the gradient The initialization of weights is important. 如果 初始化过小, 经过激活后网络中权值的update就会 趋于0;如果过大,就可能出现梯度爆炸;尝试xavier initialization main loop: while True: data_batch = dataset.sample_data_batch() loss = network.forward(data_batch) loss = network.backward() x += -learning_rate * dx 不同的参数更新方案有不同的优化途径和优化速度,SGD方法是所有方法中最慢的。 The problems of SGD and why SGD is slow? 假设一个损失函数空间,损失函数的垂直方向非常陡峭,水平方向非常shallow 水平方向上的梯度非常小,垂直方向上梯度很大。 更新方式如上,补救的一种方式是 动量更新:

sp2.2 优化算法 加快训练

筅森魡賤 提交于 2019-12-16 20:26:17
batch批梯度下降法:以前是所有的x1到xn之和减去yi到yn之和整体一遍算梯度下降 假设数据特别多 上亿只为了求个微分 还要重复 mini-batch:把训练集分成几个部分,假设500 万个样本,分成5000个小部分 每个1000样本 x^(i)第几个样本 x^[l]第几层的X x^{t}第几个部分的y^{t} 假设样本1000个每部分 则x^{t}为(n,1000)n是特征值数 每次梯度下降取一块即可 这里X{}大括号表示 第几组(代) 原本5,000,000分为 5000组 每组1000个训练样本 这里一个for循环 称为1代,这里一代也就是整个训练集,他就能做5000个梯度下降了, 外面可以在加个大循环 循环几代 在整体的批梯度下降每次都是减少的J 只要步子选的对 但是在mini-batch中是曲折的,可能部分批次难算 里面的样本有些不同 每次更新Θ只用一个样本 随机梯度下降不会停止 只会最后在最小附近一直 失去向量化带来的加速 效率慢 所以mini-batch还是选个不大不小的:训练集小的话直接批梯度 2000一下 大的话64-1024,最好是2的次方 卧槽玄学 和cpu运行有关 SGD每个样本都算个损失和反向传播 SGD三个循环 一个整个样本的循环几遍 一个循环每个样本反向传播 一个循环每一层 SGD和minibatch 这三种的区别就是 the number of

pytorch中模型文件.pth的解析

寵の児 提交于 2019-12-15 00:49:33
在pytorch进行模型保存的时候,一般有两种保存方式,一种是保存整个模型,另一种是只保存模型的参数。 torch.save(model.state_dict(), "my_model.pth") # 只保存模型的参数 torch.save(model, "my_model.pth") # 保存整个模型 保存的模型参数实际上一个字典类型,通过key-value的形式来存储模型的所有参数,本文以自己在实践过程中使用的一个.pth文件为例来说明,使用的是整个模型。 1.1 .pth 文件基本信息的查看 import torch pthfile = r'F:/GNN/graph-rcnn/graph-rcnn/datasets/sg_baseline_ckpt.pth' #faster_rcnn_ckpt.pth net = torch.load(pthfile,map_location=torch.device('cpu')) # 由于模型原本是用GPU保存的,但我这台电脑上没有GPU,需要转化到CPU上 print(type(net)) # 类型是 dict print(len(net)) # 长度为 4,即存在四个 key-value 键值对 for k in net.keys(): print(k) # 查看四个键,分别是 model,optimizer,scheduler

使用fastai完成图像分类

最后都变了- 提交于 2019-12-12 01:14:56
by Wenqi Sun 1 min read Categories Deep Learning Tags Fastai CNN Application 1. 使用现有数据集进行分类 图像数据为 Oxford-IIIT Pet Dataset (12类猫和25类狗,共37类),这里仅使用原始图片集images.tar.gz 数据准备 import numpy as np from fastai.vision import * from fastai.metrics import error_rate path_img = 'data/pets/images' bs = 64 #batch size fnames = get_image_files(path_img) #get filenames(absolute path) from path_img pat = re.compile(r'/([^/]+)_d+.jpg$') #get labels from filenames(e.g., 'american_bulldog' from 'data/pets/images/american_bulldog_20.jpg') ### ImageDataBunch ### 使用正则表达式pat从图像文件名fnames中提取标签,并和图像对应起来 ### ds_tfms: 图像转换

Obtaining momentum quaternion from two quaternions and timestep

若如初见. 提交于 2019-12-11 09:53:01
问题 I have a quaternion which holds the rotation of an object. During the frame I modify it and obtain a new quaternion. I can calculate a quaternion that rotates from 'previous frame' to 'current frame'. I cannot figure out, however, how to 'divide by t' this quaternion to get the rotation-per-second that I need. I.e, based on the timestep, I need to know what the quaternion would look like had it been applied to itself an X amount of times (meaning, 28.5 times at 28.5 fps, etcetera). Would

Momentum Contrast for Unsupervised Visual Representation Learning

有些话、适合烂在心里 提交于 2019-12-10 20:43:26
Momentum Contrast for Unsupervised Visual Representation Learning 一、Methods Previously Proposed 1. End-to-end Mechanisms 方法简介:对于每个mini-batch中的 image 进行增强,每一张图片经过增强处理都得到两张图片q 和 $ k_+ $, 这两张互为正样本。采用两个不同的 encoder 分别对 q和 dictionary中的keys(包含q对应的正样本 $ k_+ $) 进行编码得到相应特征,通过计算特征间的 contrastive loss 对两个encoder都进行一次参数更新。 弊端:dictionary size 和 mini-batch 的强耦合性,也就是dictionary size = mini-batch size,而dictionary size 取决于最终的模型特征表达性能,也就是GPU大小限制了模型的性能。 2. Memory Bank 方法简介:大致方式与 end-to-end 差不多,主要有以下几点区别: decoupled:memory bank 让 dictionary size 从 mini-batch 中解耦出来,这个 dictionary size 就是整个样本的数量。 update: query

Momentum Contrast for Unsupervised Visual Representation Learning (MoCo)

走远了吗. 提交于 2019-12-10 20:38:13
Momentum Contrast for Unsupervised Visual Representation Learning 一、Methods Previously Proposed 1. End-to-end Mechanisms 方法简介:对于每个mini-batch中的 image 进行增强,每一张图片经过增强处理都得到两张图片q 和 $ k_+ $, 这两张互为正样本。采用两个不同的 encoder 分别对 q和 dictionary中的keys(包含q对应的正样本 $ k_+ $) 进行编码得到相应特征,通过计算特征间的 contrastive loss 对两个encoder都进行一次参数更新。 弊端:dictionary size 和 mini-batch 的强耦合性,也就是dictionary size = mini-batch size,而dictionary size 取决于最终的模型特征表达性能,也就是GPU大小限制了模型的性能。 2. Memory Bank 方法简介:大致方式与 end-to-end 差不多,主要有以下几点区别: decoupled:memory bank 让 dictionary size 从 mini-batch 中解耦出来,这个 dictionary size 就是整个样本的数量。 update: query

mxnet to onnx to caffe

烈酒焚心 提交于 2019-12-10 03:29:50
三个步骤 1、mxnet to onnx https://blog.csdn.net/lhl_blog/article/details/90672695 2、onnx 经过简化操作去除onnx 自己加的层 https://github.com/daquexian/onnx-simplifier 3、onnx to caffe, https://github.com/MTlab/onnx2caffe 1、raise MXNetError(py_str(_LIB.MXGetLastError())) mxnet.base.MXNetError: [10:51:40] src/ndarray/ndarray.cc:1805: Check failed: fi->Read(data) Invalid NDArray file format 模型虽然下载了,但是没有下载完全, 2、ImportError: numpy.core.multiarray failed to import 更新numpy 版本 3、 mxnet onnx to simplifer onnx, error onnxruntime::BatchNorm < T >::BatchNorm(const onnxruntime::OpKernelInfo &) [ with T = float] spatial == 1

Overflow Scrolling on Android doesn't work?

我的未来我决定 提交于 2019-12-09 06:46:02
问题 yupp, I'm one of these guys who want to develop mobile apps with HTML5. On Android and iOS. Sounds crazy I know. Sadly I have a problem... I have a classic app with a footer and header and a content which should be scrollable. On iOS this works fantastic! The header and footer have "position: fixed" to top/bottom and the content uses native scrolling momentum with "-webkit-overflow-scrolling: touch;". I know that "-webkit-overflow-scrolling: touch;" isn't available on Android, but this

What's different about momentum gradient update in Tensorflow and Theano like this?

非 Y 不嫁゛ 提交于 2019-12-07 03:55:01
问题 I'm trying to use TensorFlow with my deep learning project. Here I need implement my gradient update in this formula : I have also implement this part in Theano, and it came out the expected answer. But when I try to use TensorFlow's MomentumOptimizer , the result is really bad. I don't know what is different between them. Theano: def gradient_updates_momentum_L2(cost, params, learning_rate, momentum, weight_cost_strength): # Make sure momentum is a sane value assert momentum < 1 and momentum