
机器学习
文章平均质量分 51
FY_2018
这个作者很懒,什么都没留下…
展开
-
labelsmoothing的理解
无原创 2022-10-17 17:18:57 · 1117 阅读 · 1 评论 -
将标签转化为one-hot
import torch'''场景设定:有3个样本,5个类别分类器输出的预测结果为,shape为(3,5)标签值是整数序列:[2,0,3],表示第一个样本属于类别2,第二个样本属于类别0,第三个样本属于类别3现需要将标签转化为one-hot形式'''label = torch.Tensor([[2],[0],[3]]).long() #将label列表转化为列矩阵oh = torch.zeros(3,5).scatter_(1,label,1) #第一个参数表示按第1维度,即按列进行.原创 2022-03-23 11:47:19 · 2085 阅读 · 0 评论 -
PyTorch中torch.nn.functional.pad函数使用详解
从上面的例子看出,之后后三个维度发生了扩增,因为我们输入的padding长度为6,只能影响后三个维度。原文:https://blog.youkuaiyun.com/qq_34914551/article/details/102940377转载 2021-09-02 19:15:44 · 304 阅读 · 0 评论 -
Pytorch中nn.Conv2d的dilation
No padding, no stride, dilation(Blue maps are inputs, and cyan maps are outputs)————————————————原文链接:https://blog.youkuaiyun.com/sunmingyang1987/article/details/115472959转载 2021-09-02 18:23:07 · 366 阅读 · 0 评论 -
Pytorch中BatchNorm中running_mean和running_var的计算方法
以下的过程中都是在train模式下进行的,并且没有进行损失计算和梯度更新,但这个过程中running_mean和running_var会进行更新,所以也验证了running_mean和running_var只受模型的模式(train模型或eval模型)的影响,与是否进行反向传播(loss.backward)和梯度更新(optimiter.step)没有关系。实验一:1. 标准库函数的参数设置为 torch.nn.BatchNorm1d(linear1_features,momentum=0.1..原创 2021-08-28 21:51:43 · 9421 阅读 · 1 评论 -
pytorch中BatchNorm的在eval模型下的使用与验证
结论:1.前提在train模式下,nn.BatchNormxd中的参数track_running_stats必须为True, 这样才能保存训练时的统计参数: running_mean,running_var; 以及训练时的学习参数: weight,bias(其中weight,bias是缩放系数,在训练时weigth和bias是可训练的参数) 。2. nn.BatchNormxd在eval模式下计算过程如下:使用在训练模式下保存的统计参数running_mean,running_var作为mea.原创 2021-08-28 15:35:12 · 4132 阅读 · 0 评论 -
torch中train,eval实际对是model.training的控制
模型在默认情况下是train模型,所以model.training为True 模型在eval情况下,model.training为False#-*- coding:utf-8 -*-#Author LJB Create on 2021/8/27# -*- coding: utf-8 -*-import torchfrom torch.autograd import Variableimport torch.optim as optimx = Variable(torch.FloatTen原创 2021-08-27 22:15:20 · 1615 阅读 · 0 评论 -
pytorch使用GPU上的方法与心得
方法和心得都写在代码注释里了!以下的代码中有两个,CPU版本是只能在CPU上运行,没有问题,但在GPU上会出现数据位置不一致的问题;GPU版本在CPU上和GPU上运行都没有问题。import torchimport torch.nn as nn'''把模型放到指定机器上的方法非常简单,以下创建的模型在CPU和GPU上都可以运行,有GPU的时候就会用GPU:假定我们创建一个模型my_model,然后1. 第一步创建device Device = torch.device("cud原创 2021-08-26 16:58:12 · 1070 阅读 · 1 评论 -
torch.nn.Dropout()细节记录
说明:1.在model.train()模式下Dropout层是有效的,在model.eval()模式下,Dropout层是无效的。2.torch.nn.Dropout是采用的inverted版本,为了“保持期望不变”而进行了rescale(缩放),缩放比例是1/(1-p),p是的丢弃比率。Furthermore, the outputs are scaled by a factor of :math:`\frac{1}{1-p}` duringtraining. This mean...原创 2021-08-25 19:58:55 · 2239 阅读 · 1 评论 -
Pytorch常用张量操作以及归一化算法实现
本篇文章将要总结下Pytorch常用的一些张量操作,并说明其作用,接着使用这些操作实现归一化操作的算法,如BN,GN,LN,IN等!常用的张量操作cat对数据沿着某一维度进行拼接,cat后的总维度数不变,需要注意两个张量进行cat时某一维的维数要相同,否则会报错!import torchx = torch.randn(2,3)y = torch.randn(1,3)torch.cat((x, y), 0) # 维度为(3, 3)z = torch.randn(1, 4)tor转载 2021-08-17 10:17:10 · 3305 阅读 · 0 评论 -
损失函数:交叉熵、KLDivLoss、标签平滑(LabelSmoothing)
https://blog.youkuaiyun.com/qq_36533552/article/details/104034759KLDivLoss作用: 用于连续分布的距离度量;并且对离散采用的连续输出空间分布进行回归通常很有用;用label_smoothing就采用这个;公式: 公式理解: p(x)是真实分布,q(x)是拟合分布;实际计算时;通常p(x)作为target,只是概率分布;而xn则是把输............原创 2021-08-15 17:43:26 · 8718 阅读 · 1 评论 -
神经网络训练常见坑
神经网络已经持续训练了 12 个小时。它看起来很好:梯度在变化,损失也在下降。但是预测结果出来了:全部都是零值,全部都是背景,什么也检测不到。我质问我的计算机:“我做错了什么?”,它却无法回答。如果你的模型正在输出垃圾(比如预测所有输出的平均值,或者它的精确度真的很低),那么你从哪里开始检查呢?无法训练神经网络的原因有很多。在经历了许多次调试之后,我发现有一些检查是经常做的。这张列表汇总了我的经验以及最好的想法,希望对读者也有所帮助。〇. 使用指南许多事情都可能出错。但其中有些事情相比于原创 2021-08-15 00:08:42 · 2909 阅读 · 0 评论 -
理解 pytorch 的 CrossEntropyLoss
简介为了更好地理解 pytorch 的 CrossEntropyLoss,于是打算进行简单的实现。官方文档:https://pytorch.org/docs/stable/nn.html?highlight=crossentropyloss#torch.nn.CrossEntropyLoss官网 loss 的公式:x 的维度是 (batch_size, C)class 的维度是 (batch_size)(这里的 C 是分类的个数)import numpy as n..原创 2021-08-09 17:13:51 · 526 阅读 · 0 评论 -
torch.nn.Conv1d及一维卷积详解
近日在搞wavenet,期间遇到了一维卷积,在这里对一维卷积以及其pytorch中的API进行总结,方便下次使用之前对二维卷积是比较熟悉的,在初次接触一维卷积的时候,我以为是一个一维的卷积核在一条线上做卷积,但是这种理解是错的,一维卷积不代表卷积核只有一维,也不代表被卷积的feature也是一维。一维的意思是说卷积的方向是一维的。下边首先看一个简单的一维卷积的例子(batchsize是1,也只有一个kernel):输入:一个长度为35的序列,序列中的每个元素有256维特征,故输入可以看作(3转载 2021-08-07 17:25:41 · 3533 阅读 · 0 评论 -
Transformer架构解析
1.输入部分包含:(1)源文本嵌入层及其位置编码器(2)目标文本嵌入层及其位置编码器文本嵌入层的作用无论是源文本嵌入还是目标文本嵌入,都是为了将文本中词汇的数字表示转变为向量表示, 希望在这样的高维空间捕捉词汇间的关系.位置编码器的作用因为在Transformer的编码器结构中, 并没有针对词汇位置信息的处理,因此需要在Embedding层后加入位置编码器,将词汇位置不同可能会产生不同语义的信息加入到词嵌入张量中, 以弥补位置信息的缺失.2.编码器部分:(1)掩码张.转载 2021-08-07 09:02:26 · 2645 阅读 · 0 评论 -
PyTorch中的contiguous
本文讲解了pytorch中contiguous的含义、定义、实现,以及contiguous存在的原因,非contiguous时的解决办法。并对比了numpy中的contiguous。contiguous本身是形容词,表示连续的,关于contiguous,PyTorch 提供了is_contiguous、contiguous(形容词动用)两个方法 ,分别用于判定Tensor是否是contiguous的,以及保证Tensor是contiguous的。PyTorch中的is_contiguous是...转载 2021-08-05 20:53:03 · 359 阅读 · 0 评论 -
Transformer文档
1.Transformerhttps://pytorch.org/docs/master/generated/torch.nn.Transformer.html#torch.nn.Transformer原创 2021-07-15 17:03:35 · 558 阅读 · 0 评论 -
nn.KLDivLoss(2)
import torch import torch.nn as nn import numpy as np # ----------------------------------- KLDiv loss loss_f = nn.KLDivLoss(size_average=False, reduce=False) loss_f_mean = nn.KLDivLoss(size_average=True, reduce=Tru...转载 2021-07-09 21:10:36 · 707 阅读 · 0 评论 -
torch.nn.KLDivLoss(1)
loss = nn.KLDivLoss(reduce=False)batch_size = 5log_probs1 = F.log_softmax(torch.randn(batch_size, 10), 1)probs2 = F.softmax(torch.randn(batch_size, 10), 1)loss(log_probs1, probs2) / batch_size转载 2021-07-09 21:01:00 · 1110 阅读 · 0 评论 -
pytorch .detach() .detach_() 和 .data用于切断反向传播
参考:https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-autograd/#detachsource当我们再训练网络的时候可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整;或者值训练部分分支网络,并不让其梯度对主网络的梯度造成影响,这时候我们就需要使用detach()函数来切断一些分支的反向传播1 detach()[source]返回一个新的Variable,从当前计算图中分离下来的,但是仍..转载 2021-07-09 20:15:11 · 359 阅读 · 0 评论 -
scatter_()函数的详细介绍
一、函数介绍scatter_(input, dim, index, src):将src中数据根据index中的索引按照dim的方向填进input。可以理解成放置元素或者修改元素 dim:沿着哪个维度进行索引index:用来 scatter 的元素索引src:用来 scatter 的源元素,可以是一个标量或一个张量二、实现原理x = torch.rand(2, 5) #tensor([[0.1940, 0.3340, 0.8184, 0.4269, 0.5945],# ...原创 2021-07-09 09:16:21 · 257 阅读 · 0 评论 -
nn.Embedding中padding_idx的理解
每个句子的长度并不一定是等长的, 这时候就需要对较短的句子进行padding, nn.Embedding中padding_idx是指定padding的索引值。#实例化词嵌入对象,序列进行padding时补padding_idx。当采用补0的方式,padding_idx =0#这里的词空间大小为5,词嵌入维度大小为7embeder = nn.Embedding(5,7,padding_idx=0)print(embeder.weight) #padding_idx的位置为全0print('*.原创 2021-07-08 16:58:28 · 2518 阅读 · 1 评论 -
标签平滑(label smoothing)
5. 参考博客https://www.cnblogs.com/whustczy/p/12520239.htmlhttps://blog.youkuaiyun.com/Matrix_cc/article/details/105344967转载 2021-07-08 09:31:52 · 224 阅读 · 0 评论 -
理解字符串核函数(SVM) 以及 sklearn自定义svm核函数(外部和内部定义)
原文:https://blog.youkuaiyun.com/shijing_0214/article/details/51134802?locationNum=2&fps=1sklearn自定义svm核函数(外部和内部定义)原文:https://my.oschina.net/u/2996334/blog/1819734我们可以使用自己编写的核函数:*注意,如果使用precomputed模式,也就是不传入函数,而直接传入计算后的核,那么参与这个核计算的数据集要包含训练集和测试集...原创 2021-05-27 09:49:56 · 1083 阅读 · 0 评论 -
机器学习:5支持向量机SVM
ipynb文件见:https://github.com/824024445/Machine-learning-notes/blob/master/5支持向量机.ipynb《Sklearn与TensorFlow机器学习实用指南》学习笔记也叫最大间隔分类一、线性支持向量机分类以鸢尾花数据为例硬间隔,软间隔:软间隔就是允许一部分数据在边界内参数解释:C:值越小间隔越“软”loss:计算软间隔用的损失函数的类型与逻辑回归分类器比较:逻辑回归分类器是判断属于每个类别的概率,选择最大的那个转载 2021-05-27 09:42:09 · 391 阅读 · 0 评论 -
机器学习实战—基于Scikit-Learn、Keras和TensorFlow2第二版—第7章 集成算法和随机森林
出处:《机器学习实战》https://blog.youkuaiyun.com/Jwenxue/article/details/107092547集成算法和随机森林详解很透彻原创 2021-05-18 22:05:50 · 456 阅读 · 0 评论 -
numpy中的ravel()、flatten()、squeeze()的用法与区别以及meshgrid()
numpy中的ravel()、flatten()、squeeze()都有将多维数组转换为一维数组的功能,区别:ravel():如果没有必要,不会产生源数据的副本flatten():返回源数据的副本squeeze():只能对维数为1的维度降维另外,reshape(-1)也可以“拉平”多维数组原文链接:https://blog.youkuaiyun.com/tymatlab/article/details/79009618+++++++++++++++++++++++++++++++++++++.转载 2021-05-18 17:39:39 · 474 阅读 · 0 评论 -
分类器组合方法Bootstrap, Boosting, Bagging, 随机森林
原文链接:https://blog.youkuaiyun.com/zjsghww/article/details/51591009转载 2021-05-18 17:23:23 · 179 阅读 · 0 评论 -
python sklearn模型中random_state参数的意义
很多人都把random_state解释为随机数种子。是不是很懵逼?什么是随机数种子?我也不知道什么是随机数种子。但是,随机数种子是为了保证每次随机的结果都是一样的Example:sklarn可以随机分割训练集和测试集(交叉验证),只需要在代码中引入model_selection.train_test_split就可以了代码:from sklearn import model_selectionx_train, x_test, y_train, y_test = model_selectio转载 2021-05-18 16:01:43 · 1342 阅读 · 0 评论 -
RandomForest的out of bag estimate
转载 2021-05-17 22:32:23 · 242 阅读 · 0 评论 -
sklearn 数据预处理1: StandardScaler
StandardScaler作用:去均值和方差归一化。且是针对每一个特征维度来做的,而不是针对样本并不是所有的标准化都能给estimator带来好处。“Standardization of a dataset is a common requirement for many machine learning estimators: they might behave badly if the individual feature do not more or less look like stan转载 2021-05-17 22:16:02 · 814 阅读 · 0 评论 -
关于sklearn下class_weight参数
一直没有很在意过sklearn的class_weight的这个参数的具体作用细节,只大致了解是是用于处理样本不均衡。后来在简书上阅读svm松弛变量的一些推导的时候,看到样本不均衡的带来的问题时候,想更深层次的看一下class_weight的具体作用方式,svm松弛变量的简书链接:https://www.jianshu.com/p/8a499171baa9该文中的样本不均衡的描述:“样本偏斜是指数据集中正负类样本数量不均,比如正类样本有10000个,负类样本只有100个,这就可能使得超平面被“推向转载 2021-05-17 22:08:42 · 10419 阅读 · 2 评论 -
sklearn中warm_start参数的作用详解
转载 2021-05-17 21:32:10 · 793 阅读 · 0 评论 -
随机森林的理解
链接:https://www.zhihu.com/question/64043740/answer/672248748来源:知乎随机森林随机森林是一种灵活的、便于使用的机器学习算法,即使没有超参数调整,大多数情况下也会带来好的结果。它可以用来进行分类和回归任务。通过本文,你将会学习到随机森林算法是如何解决分类和回归问题的。为了理解什么是随机森林算法,首先要熟悉决策树。决策树往往会产生过拟合问题,尤其会发生在存在整组数据的决策树上。有时决策树仿佛变得只会记忆数据了...转载 2021-05-17 17:36:59 · 2619 阅读 · 0 评论 -
cart回归树的理解
id3不能直接处理连续性的特征,需要将连续性的转化成离散的,但是会破坏连续性特征的内在结构。一、概念CART全称叫Classification and Regression Tree。首先要强调的是CART假设决策树是二叉树,内部结点特征的取值只有“是”和“否”,左分支是取值为“是”的分支,有分支则相反。这样的决策树等价于递归地二分每个特征。CART分类回归树是一种典型的二叉决策树,可以做分类或者回归。如果待预测结果是离散型数据,则CART生成分类决策树;如果待预测结果是连续型数据,则CA.转载 2021-05-17 17:09:38 · 4591 阅读 · 0 评论 -
python画混淆矩阵
对于分类问题,为了直观表示各类别分类的准确性,一般使用混淆矩阵M.混淆矩阵M的每一行代表每个真实类(GT),每一列表示预测的类。即:Mij表示GroundTruth类别为i的所有数据中被预测为类别j的数目。这里给出两种方法画混淆矩阵。方法一:这里采用画图像的办法,绘制混淆矩阵的表示图。颜色越深,值越大。# -*- coding: utf-8 -*-# By Changxu Cheng, HUST from __future__ import divisionimport nump.转载 2020-09-27 21:39:33 · 2840 阅读 · 0 评论 -
隐马尔可夫链模型的训练与预测
隐马尔可夫模型 HMM 的python实现https://www.cnblogs.com/d-roger/articles/5719979.html摘要:本文主要介绍隐马尔可夫模型HMM的python实现,参考的文献主要是:[1]. Lawrence R. Rabiner, ‘A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition,’ Proceedings of the IEEE,.转载 2020-09-10 15:31:35 · 1606 阅读 · 0 评论 -
LRN 局部响应归一化层(Local Response Normalization)
局部响应归一化层(Local Response Normalization)局部响应归一化层简称LRN,是在深度学习中提高准确度的技术方法。一般是在激活、池化后进行的一中处理方法,因在Alexnet中运用到,故做一下整理。为什么要引入LRN层?首先要引入一个神经生物学的概念:侧抑制(lateral inhibitio),即指被激活的神经元抑制相邻的神经元。归一化(normaliazation)的目的就是“抑制”,LRN就是借鉴这种侧抑制来实现局部抑制,尤其是我们使用RELU的时候,这种“侧抑制转载 2020-09-01 08:54:11 · 1366 阅读 · 0 评论 -
keras实现神经网络
1 简单的回归#coding=utf-8import numpy as npnp.random.seed(1337)from keras.models import Sequentialfrom keras.layers import Denseimport matplotlib.pyplot as plt# create some dataX = np.linspace(-1, 1, 200)np.random.shuffle(X)Y = 0.5*X + 2 + np.ran转载 2020-08-31 21:16:56 · 782 阅读 · 0 评论 -
隐马尔可夫链模型
https://www.cnblogs.com/fulcra/p/11065474.html一文搞懂HMM(隐马尔可夫模型)什么是熵(Entropy)简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度。熵越大,系统越无序,意味着系统结构和运动的不确定和无规则;反之,,熵越小,系统越有序,意味着具有确定和有规则的运动状态。熵的中文意思是热量被温度除的商。负熵是物质系统有序化,组织化,复杂化状态的一种度量。熵最早来原于物理学. 德国物理学家鲁道夫·克劳修斯首次提出熵的概念,用来表转载 2020-08-08 21:50:08 · 1013 阅读 · 0 评论