深度学习项目
Better-1
这个作者很懒,什么都没留下…
展开
-
归一化和反归一化
在totensor也就是/255的基础上, transform.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))我们看到的这个操作其实就是均值减去0.5,方差减去0.5.在图片的预处理中经常用到:transform.ToTensor()ToTensor()能够把图片的灰度范围从0~255 变成0~1之间transform.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))transforms.Normalize()功能:逐channel的原创 2021-05-04 11:43:42 · 3729 阅读 · 0 评论 -
linux设置快捷命令
可以节省很多麻烦,比如sudo dockerlinux设置快捷命令linux可以通过alias 命令注册一个快捷命令,假如想执行cdw直接进入www目录:alias cdw=‘cd /data/www-data/www’将上述设置写到home目录的.bashrc文件中(~/.bashrc)保存文件后,关掉当前终端并重新打开一个新的终端,从而使上面的配置生效或者运行:source ~/.bashrc以后每次进入后就可以执行了。...原创 2021-04-29 09:52:44 · 640 阅读 · 0 评论 -
梯度下降法
Adam、RMSProp、Momentum、Adagrad、Momentum动量法考虑了上一次步伐的信息。—相当于速度。Adagrad—梯度的累积平方和作为分母Adagrad 解决这个问题的思路是: 你已经更新的特征越多,你将来更新的就越少,这样就有机会让其它特征(例如稀疏特征)赶上来。Adagrad 将采取直线路径,而梯度下降(或相关的动量)采取的方法是“让我先滑下陡峭的斜坡,然后才可能担心较慢的方向”。sum_of_gradient_squared = previous_sum_of_gra转载 2021-03-24 21:38:42 · 103 阅读 · 0 评论 -
cutmix
def rand_bbox(size, lam): W = size[2] H = size[3] cut_rat = np.sqrt(1. - lam) cut_w = np.int(W * cut_rat) cut_h = np.int(H * cut_rat) # uniform cx = np.random.randint(W) cy = np.random.randint(H) bbx1 = np.clip(cx - cu原创 2021-03-07 10:50:12 · 305 阅读 · 0 评论 -
nn.AdaptiveAvgPool2d理解
如果是nn.AdaptiveAvgPool2d((1,1)), 可以从原来的[2, 2048, 10, 10] 转变为[2, 2048, 1, 1]如果是nn.AdaptiveAvgPool2d(7), 则可以从[2, 2048, 10, 10] 转变为[2, 2048, 7, 7]自适应的全局平均池化~只需要给出初始大小和输出大小,中间的步骤就由函数自己运算得到。...原创 2021-03-06 14:04:55 · 1985 阅读 · 0 评论 -
EfficientNet笔记
传统的三个方式:扩大输入的分辨率、扩大深度、扩大宽度(a)是基本模型,(b)是增加宽度,(c)是增加深度,(d)是增大属兔图像分辨率,(d)是EfficientNet,它从三个维度均扩大了,但是扩大多少,就是通过作者提出来的 复合模型扩张方法 结合 神经结构搜索 技术获得的。作者指出,模型扩张的各个维度之间并不是完全独立的,比如说,对于更大的分辨率图像,应该使用更深、更宽的网络,这就意味着需要平衡各个扩张维度,而不是在单一维度张扩张。如下图所示,直线上的每个点表示具有不同宽度系数(w)的模原创 2021-02-22 22:58:53 · 195 阅读 · 0 评论 -
deeplabv3+论文笔记
主要工作:SPP:也就是空间金字塔池化,池化的操作如图: 256是channel, 分成了16份、4份、1份,再送入全连接层。通过SPP层,特征映射被转化成了16X256+4X256+1X256 = 21X256的矩阵,在送入全连接时可以扩展成一维矩阵,即1X10752,所以第一个全连接层的参数就可以设置成10752了,这样也就解决了输入数据大小任意的问题了。#coding=utf-8import mathimport torchimport torch.nn.functional as原创 2021-02-20 15:15:23 · 1250 阅读 · 0 评论 -
库存的inception_v3代码对应图
原创 2021-01-23 15:46:41 · 79 阅读 · 0 评论 -
Torch入门笔记(更新)
PyTorch是基于PYTHON的科学计算包,为了使用GPU来替代NUMPY,灵活性和速度较好。Tensor张量类似与numpy的ndarrays,不同在与张量可以使用GPU来加快计算。很舒服,torch和numpy基本很相似,函数的运用名字也是。rand是平均分布,即等概率分布,等概率产生0-1范围内的数 randn是标准正态分布,均值为0,标准差为1torch的操作大全https://pytorch.org/docs/stable/torch.htmlx = torch.Tensor(5,原创 2020-07-13 19:48:24 · 398 阅读 · 0 评论 -
图片数据集的读取和保存
读取import matplotlib.pyplot as pltplt.imread(path)plt读取到的已经是numpy形式的数据。(image.len, image.width, channel)一个简单的demo:test_list = os.listdir(path)test_image = np.zeros((len(test_list), example.shape[0], example.shape[1]))for image in range(len(test_list原创 2020-07-13 00:05:08 · 1929 阅读 · 0 评论 -
列表和字典的sort和sorted()-(更新)
列表来说,sorted,列表里是字符串的话就是根据字符串首字母的大小进行排序,或者是汉字的拼音的首字母进行排序。sort若是数字的话就i是根据数字进行排序。sorted对于字典来说,就是根据字典的值的大小进行排序。...原创 2020-05-31 14:27:00 · 164 阅读 · 0 评论 -
自动写诗(更新)
笔记:嵌入层(EmbeddingLayer)通过一个隐藏层,将 one-hot 编码的词投影到一个低维空间中,本质上是特征提取器,在指定维度中编码语义特征。 这样,语义相近的词, 它们的欧氏距离或余弦距离也比较近。(作者使用的单词向量是预训练的,方法为fasttext得到的单词向量,当然也可以使用word2vec和GloVe方法训练得到的单词向量)。使用Tokenizer将文字转换成数字特征使用Keras的Tokenizer模块实现转换。当我们创建了一个Tokenizer对象后,使用该对象的f原创 2020-05-31 11:25:04 · 2082 阅读 · 0 评论 -
序列模型笔记
EOS标记可以添加到训练集每一个句子的结尾。计算机对于自然语言的理解只能通过把文本转化为向量、矩阵的形式,通过计算来获取有用的信息,词嵌入应运而生。词嵌入(WordEmbedding)的目的在于把某个词语、短语映射到高维空间,让相同、相近含义的字词在空间距离上距离相近RNN的每一个神经元的softmax的输出就是词典的大小,每个词都有对应的概率。下面是RNN从左到右依次预测每个词的过程。上图是第一个神经元,然后再把第一个预测到的概率最大的输入到下一个神经元。损失函数:每个时间步:总的损失原创 2020-05-30 14:03:54 · 128 阅读 · 0 评论 -
入手 argparse模块
官方文档:argparse是一个命令行选项、参数和子命令解析器。作用是可以让人轻松编写用户友好的命令行接口。argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。官方文档的示例很清晰:举例是输入获取一个整数列表并计算列表的总和或者最大值。import argparse# 第一步是创建一个ArgumentP转载 2020-05-20 22:13:59 · 95 阅读 · 0 评论 -
两种词嵌入的表示方法
第一种是one-hot编码,可以根据词的出现的频率作为序号,总的词的数目是one-hot的深度。第二种是根据特性,比如苹果,是食物,所以食物的类属里对应分数很高,红色、绿色等也高。但是苹果在交通等其他无关的类属里分数是0....原创 2020-05-20 17:01:47 · 795 阅读 · 0 评论