- 博客(48)
- 资源 (4)
- 收藏
- 关注
翻译 Spetrum, spectrogram指的都是什么?
Spectrogram是信号的频率随时间变化的图像,它是幅度(亮度或颜色)与频率(纵轴)与时间(横轴)的二维函数。即将时序信号经过短时傅里叶变换后得到的内容。有事又称作超声波图sonogram.Spectrum(复数spectra)指的是一个时序信号的频率成分,它是振幅(纵轴)与频率(横轴)的一维函数。即将时序信号经过傅里叶变换后得到的内容。
2023-11-20 17:07:54
1211
原创 一分钟了解python中如何使用yaml
如果我们希望将yaml文件中的数据存放在python的两个变量中,则可以使用。有多个属性时,可以写成如下形式,缩进一般为两个空格,且不能使用。,对大小写敏感,字符串不必使用引号。命令,它可以将多个数据保存到一个。字典调用里面的变量比较麻烦。假设我们有一个yaml文件。yaml文件的格式后缀。在终端中输入如下命令。yaml的语法一般为。都可以,这里我们使用。,如果我们像简便一点。
2023-08-03 19:47:13
724
原创 什么是互信息Mutual information
互信息(Mutual information)是描述一个随机变量中包含的关于另一个随机变量的信息
2023-07-13 11:48:28
1454
原创 使用pytorch进行FFT和STFT
采样频率为200Hz,采样时间为1s。由于Pytorch中没有类似于Numpy中。的用法,所以我们先用Numpy计算函数,然后再存入Tensor。如果想直接画出频谱图可以使用matplotlib的。频谱图如下,可以看到幅值和频率与函数。
2023-06-07 16:48:58
3699
1
原创 Prototypical networks for few-shot learning.
这篇论文是介绍《作者公布了他的Pytorh。如果看不太懂原作者的代码话可以看一下这一个:https://github.com/orobix/Prototypical-Networks-for-Few-shot-Learning-PyTorch。
2023-06-05 12:16:15
1384
原创 Pytorch中的sampler
更多详细信息参考官方文档:https://pytorch.org/docs/stable/data.html#torch.utils.data.Sampler。会用来产生数据的子集,需要自己生成随即的indices。中定义batch_size以外,还可以使用。会打乱daat的顺序随即输出batch。来确定batch_size。结果为(为啥是二维的?函数时要传入三个重要参数。
2023-03-28 10:44:12
1059
原创 Pytorch构建自己的数据集
返回的数不能大于样本的总个数,即要小于等于20。并且,当返回的数小于总样本个数的时候,是取索引的前几个数,最后的几个数不会被放入dataloader中。但是如果自己写一个类的话会高达上一些,嘻嘻。下面看看如何自己构建一个Dataset Class。,是将data[:15]个数放入dataloader,而后5个数要舍去。比如,我们可以导入Fashion-MNIST数据集。Pytorch中内置了许多数据集,我们可以从。库中没有该数据集,我们需要自己构建一个。其中一个方法就是把构建好的数据集使用。
2023-03-28 10:37:15
1838
原创 [Few-shot learning] Siamese neural networks
这篇文章主要介绍的是Siamese Neural Network经典论文:。神经网络能够取得非常好的效果得益于使用大量的带标签数据进行有监督学习训练。当我们只有少量带标签的数据时如何训练出一个泛化性很好的模型呢?因此,few-shot learning问题应用而生。Few-shot learning仅需要每个类别含有少量带标签数据就可以对样本进行分类。Gregory Koch等人提出了一种新的机器学习框架,当每个待测类别仅有1个样本的时候也能取得超过90%的识别准确率。
2023-03-28 10:32:05
727
原创 [Few-shot learning] MAML
论文:[Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks](# Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks)
2023-03-28 10:17:06
704
原创 生成一组序号,并打乱其顺序python
在神经网络训练中,我们通常需要打乱数据的顺序来提高模型的泛化性,一般来说sklearn或者pytroch都有相应的API做这样的操作,但是如果我们要自己实现该如何操作呢?
2022-06-06 19:22:34
828
原创 知识蒸馏Knownledge Distillation
知识蒸馏源自Hinton et al.于2014年发表在NIPS的一篇文章:Distilling the Knowledge in a Neural Network。1. 背景一般情况下,我们在训练模型的时候使用了大量训练数据和计算资源来提取知识,但这不方便在工业中部署,原因有二:(1)大模型推理速度慢(2)对设备的资源要求高(大内存)因此我们希望对训练好的模型进行压缩,在保证推理效果的前提下减小模型的体量,知识蒸馏(Knownledge Distillation)属于模型压缩的一种方法 [1.
2022-05-05 21:11:23
1822
原创 Open Set Domain Adaptation 开集领域适应
1. Motivation2017年ICCV上发表了一篇题为OpenSetDomainAdaptationOpen Set Domain AdaptationOpenSetDomainAdaptation[1]的论文说:一般我们所讲的领域适应(domain adaptation)是在一个闭集(close set)的前提条件下进行的,即源域和目标与拥有相同的标签类别。但是在大多数的实际情况中,源域和目标域可能只共享了一部分相同类别。如图1所示(图片来源于文献[1]),在Close set domain
2022-05-01 15:13:53
1750
原创 核方法 Kernel method
文章目录1.内积(点积)2.核方法 [^1]3.核方法的定义和例子[^2]4. 常见的核方法4.1 线性核4.2 多项式核1.内积(点积)内积,又叫做点积,数量积或标量积。假设存在两个向量a=[a1,a2,...,an]a=[a_{1}, a_{2}, ..., a_{n}]a=[a1,a2,...,an]和b=[b1,b2,...,bn]b=[b_{1},b_{2},...,b_{n}]b=[b1,b2,...,bn],内积的计算方法为:a⋅b=a1b1+a2b2+⋯+anbna\cd
2022-04-26 12:25:53
2044
原创 图文带你理解什么是Few-shot Learning
Few-shot Learning(少样本学习)是Meta Learning(元学习)中的一个实例1,所以在了解什么是Few-shot Learning之前有必要对Meta Learning有一个简单的认识。不过在了解什么是Meta Learning之前还是要了解一下什么是Meta。因此,阅读本文后你将对如下知识有一个初步的了解。What is MetaWhat is Meta LearningWhat is Few-shot Learning1. What is Meta?meta就是描述
2021-07-07 13:37:37
9376
3
原创 什么是Inductive learning和Transductive learning
1. Inductive learningInductive learning (归纳式学习)。归纳是从已观测到的数据到一般数据的推理,归纳学习即我们平时所说的监督学习,使用带有标签的数据进行模型训练,然后使用训练好的模型预测测试集数据的标签,训练集数据不包含测试集数据。2. Transductive learningTransductive learning (直推式学习)。直推是从观测到的特定数据到特定数据的推理。直推学习与归纳学习不同的是,训练数据和测试数据在之前都已经可以观测,我们从已知的训练
2021-07-07 13:33:07
2751
原创 [损失函数]——均方差
1. 均方差损失函数(Mean Squared Error, MSE)均方差损失函数是预测数据和原始数据对应点误差的平方和的均值,公式为:MSE=1N(y^−y)2MSE = \frac{1}{N}(\hat{y}-y)^{2}MSE=N1(y^−y)2N为样本个数。2. 均方差在pytorch中的用法均方差损失函数在pytorch中的函数为:torch.nn.MSELoss(size_average=None, reduce=None, reduction='mean')pytorch
2021-04-06 20:54:53
9812
原创 损失函数——负对数似然
阅读本文可以了解如下内容:似然似然估计对数似然负对数似然1. 似然在开始之前需要区分一个知识:似然(likelihood)和概率(probability)。概率是一个事件发生的可能性,而似然指的是影响概率的未知参数。也就是说,概率是在该未知参数已知的情况下所得到的结果;而似然是该参数未知,我们需要根据观察结果,来估计概率模型的参数。用数学方法可以描述为:假设XXX是离散随机变量,其概率质量函数ppp依赖于参数$\theta $,则:L(θ∣x)=pθ(x)=Pθ(X=x)L(\thet
2021-03-28 13:17:57
17025
4
原创 损失函数——交叉熵
在了解交叉熵之前我们需要关于熵的一些基本知识,可以参考我的上一篇博客1。1.信息熵信息熵的定义为离散随机事件的出现概率2。当一个事件出现的概率更高的时候,我们认为该事件会传播的更广,因此可以使用信息熵来衡量信息的价值。当一个信源具有多种不同的结果,记为:U1,U2,…,Un,每个事件相互独立,对应的概率记为:P1,P2,…,Pn。信息熵为各个事件方式概率的期望,公式为:H(U)=E[−logpi]=−∑i=1npilogpiH(U)=E[-\log p_{i}]=-\sum_{i=1}^{n}p_
2021-03-28 13:16:29
2219
原创 torch.cat()用法
torch.cat()可以对tensor进行上下或左右拼接,其传入的参数为:torch.cat(tensors, dim=0)dim控制拼接的维度,dim=0为上下拼接,dim=1为左右拼接1。下面是实例详解:>>> import torch>>> a = torch.rand((2,3))>>> atensor([[0.7515, 0.1021, 0.0726], [0.0575, 0.1666, 0.2763]])
2021-03-24 10:47:25
479
原创 numpy和tensor增加或删除一个维度
numpy1.增加维度import numpy as npa = np.ones((3,4))print(a.shape)输出a的形状:(3,4)现在变量a为二维数组,在图形计算中有时需要将图像处理成(length, width, channel)的形式,我们需要将a处理成三维,第三维的形状为1,方式如下:b = np.expand_dims(a, 2)print(b.shape)输出的形状为:(3,4,1)2.压缩维度如果我们想要将b再变回二维,需要用到如下方法:c = np.
2021-03-21 19:00:55
8029
原创 LabelEncoder和LabelBinarizer的区别
LabelBinarizerimport numpy as npfrom sklearn.preprocessing import LabelBinarizerlb = LabelBinarizer()a = np.array([1,2,3,2,5,6,6])b = lb.fit_transform(a)print(b)输出为:[[1 0 0 0 0] [0 1 0 0 0] [0 0 1 0 0] [0 1 0 0 0] [0 0 0 1 0] [0 0 0 0 1] [0
2021-03-21 18:59:25
460
原创 torch.cat()使用方法
torch.cat()可以对tensor进行上下或左右拼接,其传入的参数为:torch.cat(tensors, dim=0)dim控制拼接的维度,dim=0为上下拼接,dim=1为左右拼接1。下面是实例详解:>>> import torch>>> a = torch.rand((2,3))>>> atensor([[0.7515, 0.1021, 0.0726], [0.0575, 0.1666, 0.2763]])
2021-03-21 18:57:34
381
原创 使用Keras构建GAN,以Mnist为例
在开始之前请先了解GAN的原理,有很多博主讲的都很好,在这里我就不再过多讲解,视频推荐台大李宏毅老师的课程。GAN共包含两个主要结构generator和discriminator。generator负责生成假的数据来“欺骗”discriminator,discriminator负责判断输入的数据是否为generator生成的,二者互相迭代,最终实现generator生成能以假乱真的数据。以下以Mnist数据集为例,使用GAN来产生手写数字。文章目录构建网络模型1.generator2.discrimin
2021-03-18 13:32:43
826
原创 Python中的深拷贝和浅拷贝
浅拷贝浅拷贝是对一个变量的内存地址进行拷贝,这两个变量指向同一个内存地址。特点:共用同一个内存地址其中一个变量发生变换,另一个也发生变化深拷贝一个变量对另一个变量的拷贝,他们的内存地址不同特点:两个变量拥有不同的内存地址改变其中一个值,另一个值不会发生变化...
2020-08-25 15:55:28
129
原创 [c++]如何输入带有空格的字符串
我们通常使用cin和>>来输入字符或数字,但有时会出现问题,比如cin遇到空格就会停止,如果我们想输入带空格的字符串,比如"Hello World!",它就只能读取到Hello,如下所示:#include <iostream>using namespace std;int main(){ string str; cin>>str; cout<<str<<endl; return 0;}当我们输入Hello
2020-07-30 16:33:14
5956
2
原创 一个小时快速熟悉MySQL基本用法
目录0.数据库基本属性1.数据库操作1.1查看数据库1.2创建数据库1.3选中数据库1.4查看数据库中的数据表1.5删除数据库2.数据表操作2.1创建数据表2.2删除表2.3向表中添加数据2.4查询数据表中的数据2.5按特定条件查询2.6更新数据表2.7修改数据表2.8删除数据表2.9LIKE模糊查询2.10排序查询0.数据库基本属性表1 班级表ID名称班主任201二年级一班王老师202二年级二班李老师表2 学生表ID姓名班级ID性别年龄
2020-07-25 22:33:23
670
原创 快速了解集成学习
目录1.什么是集成学习2.Bagging算法3.Stacking算法4.Boosting算法1.什么是集成学习集成学习(ensemble learning)是一类机器学习框架,通过构建并结合多个学习器来完成学习任务。一般结构是:先产生一组“个体学习器”,再用某种策略将它们结合起来。结合策略主要有平均法、投票法和学习法等集成学习包含三个典型算法:Bagging、Staking和Boosting2.Bagging算法我们从很多的个体学习器中得到了不同效果的分类模型,那么怎么得到最终的模型呢?平均
2020-07-05 00:37:57
344
原创 偏差与方差及如何权衡
1.什么是偏差与方差偏差(Bias)和方差(Variance)是机器学习训练中不可避免的问题。先来看看什么是偏差和方差:我没看到左下角这幅图,箭完全偏离了靶心,这种情况叫做偏差。再看右上角这幅图,箭随机分布在靶心周围,这叫方差。可以把靶心看作模型的预测目标,箭看作模型的预测值,模型的预测结果也同样会出现偏差和方差两种情况。一个模型的误差通常来源于三种情况:模型误差=偏差+方差+不可避免误差不可避免误差往往是无法消除的,例如环境噪声等。2.造成偏差与方差的原因偏差的出现往往是模型本身有问
2020-07-01 00:19:23
2325
原创 使用paddlehub给头像添加圣诞帽(GUI版)
我的前一篇博客:使用PaddleHub给头像添加圣诞帽已经详细介绍了如何使用paddlehub给头像添加一个圣诞帽,但之前的版本由于时间仓促还存在一些问题:圣诞帽超出头像边界程序会报错无法识别出人脸位置程序会报错针对这两个问题我对代码进行了改进。代码的基本实现原理这里不再详解,如何实现可以参考之前的文章,完整代码参见Github。下面开始正题。目录1.项目背景2.解决方案3.项目代码4.结果演示1.项目背景还记得去年圣诞节前夕在朋友圈刷屏的“微信官方,请给我一顶圣诞帽”吗?事实上无论你怎么@
2020-06-29 13:56:35
321
原创 使用PaddleHub给头像添加圣诞帽
每到圣诞节的时候大家都会给自己的头像戴上一个圣诞帽,这一般会用到PS,但是如果有的人不会PS怎么办呢,快来用python一件添加吧!(如果python也不会怎么办(+_+)?)gitee项目地址这里写目录标题1.完整代码2.代码详解3.总结1.完整代码import matplotlib.pyplot as plt import matplotlib.image as mpimgpath_person = 'data/person.jpg'path_hat = 'data/hat.jpg'
2020-06-11 22:53:12
327
原创 利用opencv进行掩膜操作详解,保证看完就会(python)
有时我们需要给一张图片添加logo,例如下图这样(图片来源):1.掩码操作思路它的思想是:先将彩色图像转换为灰度图,然后利于阈值将图像二值化,变成非黑即白的形式,这样logo的蒙版就做好来了(学过PS的人应该很容易理解);蒙版中黑色的区域表示删除掉该区域像素,白色表示保留该区域像素。黑色是0,白色是255;所以利用二值化得到的蒙版(掩膜)是剔除logo区域的。反之,是用来提出logo上的多余区域的;如何剔除掉小姐姐照片中的logo区和logo上的空白区域呢,用cv2.bitwise_and方
2020-06-05 16:38:26
22420
9
原创 python cv2.resize函数high和width注意事项
在opencv中获取图片的尺寸的方法是:import cv2img = cv2.imread(path)img.shape返回的是三维数组(high, width, 3),当我们需要对图像进行缩放时需要用到cv2.resize()函数:#缩放到原来的二分之一img= cv.resize(img, (int(width / 2), int(high / 2)))此时需要传入的形状又是(width, high),这点需要注意。????不知为什么要这么设定,为什么shape和resize方法的
2020-06-05 13:39:57
1071
3
原创 matplotlib/PIL/cv2/skimage读取和显示图片的方式
python中读取图片的方式有:PIL.Image.openscipy.misc.imreadscipy.ndimage.imreadcv2.imreadmatplotlib.image.imreadskimgecaffe.io.load_iamge…在这里选择matplotlib、PIL、cv2、skimage这四种常见的读取方式,以边日后查阅,其它请参照博客。1.matplotlibimport matplotlib.image as mpimgimg1=mpimg.imr
2020-06-05 11:30:47
929
原创 分类评价指标:ROC曲线和PR曲线详解
1. 什么是ROC曲线接受者操作特性曲线(receiver operating characteristic curve,简称ROC曲线),又称为感受性曲线(sensitivity curve)。接受者操作特性曲线就是以虚惊概率为横轴,击中概率为纵轴所组成的坐标图。因此,ROC曲线越靠近坐标的左上角越好。2.混淆矩阵对于一个二分类问题,它有四种情况:如果一个实例是正类,它被分为正类,记为 真正(True Positive);如果一个实例是正类,它被分为负类,记为 假负(False Negativ
2020-06-04 15:04:27
4681
1
原创 [python]pickle序列化存储
1.为什么要进行序列化存储在程序运行过程中所有的变量都是存在内存中,一旦程序关闭或者电脑关机,内存中的所有数据都会丢失。为了能够继续使用,我们需要将数据存放在硬盘里。我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化
2020-05-29 12:18:57
224
原创 如何使用opencv调用电脑摄像头
import cv2 as cvdef video_demo():#0是代表摄像头编号,只有一个的话默认为0 capture=cv.VideoCapture(0) if not cap.isOpened(): print("Cannot open camera") exit() while(True): ref,frame=capture.read() cv.imshow("1",frame)#等待30ms显
2020-05-19 12:42:24
3121
1
原创 keras构建resnet50网络代码解读
Resnet50的代码不是由笔者编写,笔者只对代码进行讲解,方便后续使用。原作者博客链接。为了节省篇幅这里不贴出代码,请访问原作者GitHub查看代码。Resnet50包含两种基本模块Conv Block和Identity Block,其结构图如下所示:从图中可以看到,Identity Block的输出和输入必须是有相同的形状(不然residual和input不能相加),这导致卷积提取到的特征长宽和维度不能发生变化,而Conv Block在残差边加入了一层卷积可以对输入的维度进行调整,这可以使残差
2020-05-18 16:50:10
2859
1
YOLOv3模型及参数opencv版
2020-05-17
MATLAB遗传算法工具箱使用手册
2019-02-21
蝙蝠算法MATLAB程序
2019-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人