自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 相机参数学习

在曝光度不变的前提下,任何一个的改变需要其他两者的调整来维持。比如,拍摄静物或者有三脚架时,快门时间就可以自由调节来控制曝光度(因为不需要担心其对拍摄速度的影响)。比如,需要拍摄逆光,本身就希望照片暗一点,就可以使用小的感光度,提高画面质量(因为不需要担心高质量对光的影响)。对主要的相机参数介绍,包括光圈(Aperture),快门(Shutter),和感光度(ISO)。总的来说,三者都会影响曝光亮度。大的光圈会增加亮度,相应会导致远处的背景虚化。快的时间可以捕捉快速运动,或者防止手抖,相应会导致亮度变低。

2024-04-29 11:56:51 143

原创 One Time Pad (OTP)

一次一密

2022-07-07 09:40:44 1609 1

原创 git branch checkout理解

git中可以理解为有两种指针,git的提交记录可以看做是一棵树。两种指针指向不同位置来索引。branch name的指针。比如说main就是最一开始有的branch,操作都是基于main这个指针的。 HEAD指针。HEAD指针其实才是真正指向某一个位置的指针。我们以为main起作用,其实是因为HEAD指向了main。我们也可以用checkout让HEAD指向别的branch name指针,这样就是别的branch起作用了。当然,还可以分离HEAD和branch name,让HEAD指向某一个提交位置。

2021-12-14 09:54:26 2380

原创 Visualizing the Loss Landscape of Neural Nets论文笔记

论文链接https://arxiv.org/pdf/1908.05620.pdf。给出了一种很好看的可视化loss landscape的方法。还可以进一步将训练过程在land scape上标识出来。这个是我在MLP上可视化的训练过程(动态的图是额外的操作,和论文方法无关)。生成land scape和训练过程曲线是两个分开的步骤。生成2D land scape直接放伪代码。加扰动的dir_x和dir_y生成是有讲究的,并非直接的随机向量。对于卷积层,要以filter为单位做normaliz..

2021-11-17 17:08:58 2389 2

转载 集成学习笔记:MoE, bagging, boosting, stacking

集成学习(ensemb learning)希望可以结合多个模型获得更好的结果。学习混合专家系统mixture of expert(MoE)的时候,发现它只是集成学习中的一类。还有其他三类很有效的方法是bagging,boosting和stacking。BaggingBagging即套袋法,其算法过程如下: 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k

2021-09-11 11:19:07 875

原创 Python import使用方法详解

对python的import机制一直停留在import,from 。。 import可以用上。但是一旦项目结构变得复杂就import不对了,各种报错。尤其是被pycharm自动路径管理惯坏了以后,在命令行里跑,import太乱了。。。比如在一个项目中,结构如下:这是用pycharm管理的一个项目。用pycharm执行脚本和在命令行里执行,import会有不同的行为,因为pycharm会自动加入项目的路径。之后的记录都是用命令行的,因为这个更一般。而且命令行的import能用,pycharm也能用。

2021-08-18 10:49:42 2034

原创 Pytorch backward() 笔记

创建和训练神经网络包括以下基本步骤: 定义网络结构 使用输入数据在网络上正向传播--forward() 计算loss 反向传播以计算每个权重的梯度--backward(),计算出的梯度会存在每一个参数的tensor内部 使用学习率更新权重--optimizer.step()第1,2,3步都已经了解,这里记录一下第4步的原理和pytorch中的实现,方便回忆。原理反向传播其实就是链式求导法则的另一个名字。在训练时,用给定的输入计算出输出,然后和标准比较计算出loss。然后用loss...

2021-08-06 21:59:44 740

原创 Huggingface-4.8.2自定义训练

Huggingface走到4.8.2这个版本,已经有了很好的封装。训练一个语言网络只需要调用Trainer.train(...)即可完成。如果要根据自己的需求修改训练的过程,比如自定义loss,输出梯度,直接修改huggingface的源码显然是不可取的了。好在huggingface提供了相应的接口,让我们可以深入到训练过程中,加入自定义的内容。根据官方的教程,有两种推荐的方法:重载trainer中的方法,将其修改为我们需要的内容。比如trainer.compute_loss()这个函数,它定义了如何计

2021-07-16 16:00:58 5887

原创 迁移conda环境

在同一台设备上直接用,从A生成Bconda create -n B --clone A如果是在不同的设备上,要用env.yaml和requirements.txt两个合作。# at old machineconda env export > environment.ymlpip freeze > requirements.txt# go to new machineconda env create -f environment.ymlpip install -r require

2021-07-14 12:52:23 91

原创 Git学习记录2-进阶

在git学习记录1-入门中,记录了git中让新手生畏的各种概念,以及常用指令add,commit,pull,push的原理。这次讲一下更多有用的指令。查看一个repositoory的提交历史git log如果误提交了本不该上传的文件,比如大的数据文件。只在gitignore中补救是不够的,需要先让git不跟踪。git rm -r --cached .git add.git commit -m "update ignore"用到了新的指令就继续记录。。...

2021-07-13 17:16:14 84

原创 Git学习记录1-入门

在多人协作开发代码时,学长强烈建议使用git。所以学习一下基本操作,并记录下来。主要参考网站是https://www.atlassian.com/git/tutorials/what-is-version-control。Git有一个特点是有很多新的概念,指令,对于初学者不友好。但是学习后,确实是一种很方便的工具,可以极大地便利之后的开发协作。学一次,一劳永逸。常用的指令,下边会一一讲解。git initgit clone <repo url>git add .git comm

2021-07-13 15:08:32 95

原创 在预训练时使用Warm Up的理解以及loss plateau。

在预训练时使用Warm Up的理解之前在wikitext-103上预训练Bert-base的时候,发现loss曲线会平一段然后再下降,大概是像下图这样:横轴是step,纵轴是loss当时的warm up是前16K step。一直以为第二次下降是因为warm up结束后,learning rate降下来,然后loss又有一次下降。但实际原因其实是因为训练集太小,在30k的时候到了第二个epoch,然后loss会有显著的下降。之前还是不够敏感,明明16k的时候warmup就结束了,而loss在30k才又下

2021-07-10 19:32:12 1075

原创 Torch load载入数据集的标准流程

不管是图像识别还是自然语言处理任务,在训练时都需要将数据按照batch的方式载入。本文记录了用Torch load数据的流程第一步当然是先有数据的原始文件,图像处理就是一堆图片,NLP就是很多句子。这个原始文件保存成任何数据格式都没关系,因为之后会先处理成Torch.utils.data.Dataset的一个子类。转化数据为Torch.utils.data.Dataset,代码如下:from torch.utils.data import DataLoader, Dataset, Seque..

2021-07-02 14:20:17 1005

原创 为什么深度神经网络会超内存

这个主要是发生在训练时,明明放进去的数据量不多,却总是报超内存。这是因为在训练时,每一层的中间结果都会缓存下来,然后在反向传播的时候数据量还会翻倍。所以内存会不够用。在推理时就还好,中间结果没必要保存,只要输入加上模型的尺寸不超就可以。...

2021-01-12 21:00:05 375

转载 图解pytorch中LSTM的参数和具体计算的关系

参数– input_size– hidden_size– num_layers– bias– batch_first– dropout– bidirectional输入– input (seq_len, batch, input_size)– h_0 (num_layers * num_directions, batch, hidden_size)– c_0 (num_layers * num_directions, batch, hidden_size)输出– output (.

2020-12-24 16:42:45 635 4

原创 pytorch的layer profile统计每一层的计算时间,内存占用

又这么一个工具torch.autograd.profiler.profilewith torch.autograd.profiler.profile(use_cuda=True,profile_memory=True) as prof: model(x)print(prof)prof.export_chrome_trace('profiles')然后用chrome://tracing/就可以看到可视化的效果具体这个图片的解释可以参考https://www.jianshu.com/p/1

2020-12-21 21:15:41 4167 1

转载 windows安装pytorch gpu版本

转自https://www.cnblogs.com/luckyplj/p/13179220.html安装过程顺利,版本都参照教程中的即可。

2020-12-20 20:26:30 137

转载 双向LSTM

单向和双向LSTM在某些场景中,双向LSTM有更好的表现。

2020-12-16 10:04:46 709

转载 LSTM层参数量计算方法

总体来说,假设lstm层的一个时间点上的输入特征长度是n,输出长度是m,那么参数量是4*((n+m)*m+m)。详细的推导看这篇文章,讲得很详细很明白。

2020-12-12 11:07:13 1687

原创 Python 在命令行执行时输入参数

Python 在命令行执行时输入参数使用python自带的argparse库。import argparseparser = argparse.ArgumentParser(description="Demo of argparse")parser.add_argument('-n','--name', default=' Alice ')parser.add_argument('-y','--year', default='19')args = parser.parse_args()pri

2020-12-02 17:30:43 956

原创 linux和windows系统下cpu的flop测试

linux和windows系统下cpu的flop测试首先在这个链接下载对应系统的工具。这个工具应该只有intel的芯片可以用。在windows下,运行windows/mkl/benchmarks/linpack 目录之下的 runme_xeon64.bat。在linux系统下,运行linux/mkl/benchmarks/linpack下的runme_xeon64,这是个可执行文件。然后就会有关于gflop的数值输出...

2020-11-18 12:06:43 872

原创 测试两台电脑之间的连接速度

测试两台电脑之间的连接速度windows 的iperf3下载连接https://iperf.fr/iperf-download.php#windows在windows中去到有iperf3的目录下:.\iperf3 -s在linux 中iperf3 -c address

2020-11-10 18:57:07 1902

原创 tensorflow2定义很多模型对内存的释放

tensorflow2定义很多模型对内存的释放Keras作为tensorflow的后端,管理全局状态,它用来实现功能模型构建API和统一自动生成的层名。如果需要在一个循环中创建许多模型,keras的全局状态消耗越来越多的内存。可以通过调用clear_session()释放全局状态,这有助于避免旧模型和层的混乱,特别是在内存有限的时候。在tf官网给出在循环中定义网络之前清除内存的一个例子:...

2020-10-19 16:16:05 2578

原创 2020-08-16

python的with语句。针对支持上下文管理器协议(Context Management Protocol)的对象,这些对象都有enter()和exit()两种方法,需要通过enter进入,再用exit退出。使用with语句可以自动的在with那一行调用enter,并且在with语句块执行结束后调用exit。比起try/finally会简练很多,也不容易忘记写exit()。从这里这里看到有几个使用小技巧:自定义上下文管理器协议对象。自己写一个有enter和exit方法的对象。 使用ne.

2020-08-16 09:09:55 52

原创 2020-08-16

用pycharm pro远程调试代码。如果终端机能力不够,可以远程在服务器上执行。用户在终端机上修改就像在修改服务器上一样。不过如果需要像机器学习那样长时间的还是建立正式的链接。配置远程调试的连接https://www.jetbrains.com/help/pycharm/remote-debugging-with-product.html#summary...

2020-08-16 08:56:01 66

原创 CUDA:tensorflow的GPU版本安装

CUDA:tensorflow的GPU版本安装需要用到的硬件和软件注意事项验证安装成功需要用到的硬件和软件支持cuda的gpu。anaconda, python, CUDA, cudnn, cudatoolkit。CUDA安装cudnn和cudatoolkit可以通过conda直接安装,要注意cuda,cudnn,cudatoolkit版本的协调,在这里可以查看协调的组合。CUDA, cudnn, cudatoolkit的关系注意事项注意cuda的版本,如果遇到了Cou

2020-08-15 22:32:20 160

原创 理解残差神经网络(Resnet)

理解残差神经网络目的DNN在超过一定深度后,就会产生退化(degradation),在训练集和测试集的准确率都变低。一味地加深深度反而有不利的影响。很难找到一个合适的深度。如果可以给一个浅一些的神经网络加深,让可以继续学习的网络层正常工作,而那些多余的网络层只是在恒等映射,就可以解决这个问题。这就是残差神经网络的想法来源。原理残差神经网络的基本单元残差块如上图所示,它的目的是学习恒等映射。假如说这个神经网络的局部的输入x和真实输出已经一样了,那么这个局部就需要做恒等映射。然而恒等映射相比于0映射是

2020-07-05 11:19:05 4252

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除