深度学习&机器学习
文章平均质量分 51
深度学习&机器学习理论与实践相关
今晚月亮有点圆
真正的勇敢是认清生活的真相后,依然热爱生活
展开
-
TPOT——AutoML框架
是一种automl框架,它利用搜索算法,根据所提供的指标,对给定数据进行交叉验证,自动搜索出效果最好的机器学习pipeline组合。代码也是非常简洁明了。框架会自动将最佳pipeline的代码导出到指定目录。原创 2023-09-27 10:27:37 · 254 阅读 · 0 评论 -
如何在分类任务(二分类)中选择最佳的threshold
如对指标的precision值有特殊要求,比如要求其大于0.8,我们只需在precision值大于0.8的区间中选取使F1指标最大的点的阈值作为最佳threshold即可。绘制PR曲线后,再计算对应的F1列表,我们只需选取F1指标最大的点的阈值作为最佳threshold即可。当然,如果对precision和recall的看重程度不一样,也可以使用F-beta代替F1指标。原创 2023-08-24 14:41:29 · 565 阅读 · 0 评论 -
precision指标的average参数
同样适用于recall、F1。原创 2023-08-22 09:48:16 · 250 阅读 · 0 评论 -
三大特征提取器(RNN/CNN/Transformer)
三大特征提取器 - RNN、CNN和Transformer简介近年来,深度学习在各个NLP任务中都取得了SOTA结果。这一节,我们先了解一下现阶段在自然语言处理领域最常用的特征抽取结构。本文部分参考张俊林老师的文章《放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较》(写的非常好,学NLP必看博文),这里一方面对博文进行一定程度上的总结,并加上一些个人理解。在深度学习流行起来之后,随着我们的网络越做越深,我们的神经网络模型越来越像一个黑箱,我们只要喂给它转载 2021-06-11 10:30:56 · 11292 阅读 · 1 评论 -
卷积核为何是奇数
为什么CNN中的卷积核一般都是奇数为什么CNN中的卷积核一般都是奇奇数奇数,没有偶数偶数的?咱们经常见到的多为 3 * 3、55;怎么从来没有见过 44,6*6 之类的卷积核?无论奇数 or 偶数,都是能够做卷积的呀之前学习的时候真的没有想过这些问题,再复习时,觉得全是 Why?说明之前还是没有搞明白从AlexNet模型的1111、55、33,还有VGG开始统一卷积核为33,再到之后的模型,都没有用过 偶数偶数的卷积核,说明它是有问题的,或者是没有 奇数奇数的方便这一串的问题,原因有两个:1.保转载 2021-04-06 10:08:18 · 436 阅读 · 0 评论 -
pytorch中的dropout
这里的概率是每个元素被置零的概率。原创 2022-09-16 13:19:10 · 802 阅读 · 0 评论 -
4种边界Padding方法
卷积操作作为卷积神经网络的核心模块,在其计算过程中必须考虑图像“边缘像素”的卷积方式。查阅资料发现,我们可以采用“卷积之前进行边界填充”或“卷积之后进行边界填充两种方式”,同时边界填充的具体手段包含常量填充、零填充、镜像填充以及重复填充等。比起使用卷积自带的填充方式,提前填充有更强的功能有更大的自由,更为推荐。在具体分析各种Pad之前,先创建一个2dTensor用于测试后面的填充操作:x = torch.Tensor([[1, 2], [3, 4]])创建的Tensor数值分别1、2、3、4:1转载 2021-04-06 14:45:18 · 2334 阅读 · 0 评论 -
卷积的三种模式:full, same, valid
卷积的三种模式:full, same, valid通常用外部api进行卷积的时候,会面临mode选择。本文清晰展示三种模式的不同之处,其实这三种不同模式是对卷积核移动范围的不同限制。设 image的大小是7x7,filter的大小是3x31,full mode橙色部分为image, 蓝色部分为filter。full模式的意思是,从filter和image刚相交开始做卷积,白色部分为填0。filter的运动范围如图所示。2,same mode当filter的中心(K)与image的边角重合时转载 2021-04-06 14:30:09 · 339 阅读 · 0 评论 -
12.PyTorch深度学习实践——循环神经网络(基础)
循环神经网(RNN)络被大量运用于NLP领域,但是实际上,只要是时序信号比如轴承振动信号等交由RNN处理都有不错的效果。本节就来熟悉RNN的使用。如上图所示,RNN由同一循环单元重复运算构成,它的参数会随着每次运算改变。单个循环单元解释如下:从这里可以看到,它通过将输入x线性变换成和隐层h维度相同而进行运算,所以通过输入x维度和隐层h维度即可确认循环单元,可得公式如下:这里即是构造了一个循环单元,只需将循环单元循环使用即可构造RNN网络。在构造之前我们需要数据维度,网络运输就是一个维度变换的过程原创 2021-03-15 15:44:47 · 850 阅读 · 0 评论 -
10.PyTorch深度学习实践——卷积神经网络(基础)
本节开始学习卷积神经网络卷积神经网络(Convolutional Neural Networks, CNN)最早由Alexander Waibel于1987年提出,起初被称作时间延迟网络(Time Delay Neural Network, TDNN),在Yann LeCun于1989年论述网络结构时提到了“卷积”一词,因此得名。同年Yann LeCun及其合作者的LetNet-5项目为CNN引入了池化层,该项目及其变体不断发展完善CNN,最终定义了现代CNN的基本结构。还记得上一节中我们使用全连接神经原创 2021-02-23 13:16:47 · 658 阅读 · 3 评论 -
09.PyTorch深度学习实践——多分类问题
import torchfrom torchvision import transformsfrom torchvision import datasetsfrom torch.utils.data import DataLoaderimport torch.nn.functional as Fimport torch.optim as optimbatch_size = 64transform = transforms.Compose([ transforms.ToTensor()原创 2021-02-18 18:28:05 · 461 阅读 · 0 评论 -
08.PyTorch深度学习实践——加载数据集
这节主要看到了DataLoader的使用和batch_size对训练的影响,DataLoader帮助我们更便捷的操作数据集,batch_size会极大地影响训练效果准备先了解机器学习中的Epoch,Batch_size,Iteration三个概念,其实也是之前一直用到的用公式表示:Epoch = Batch_size * Iteration为什么用DataLoader?DataLoader帮我们做了什么?实验了解了基本概念和DataLoader后直接上代码,对比Batch_size对训练原创 2021-02-06 16:39:29 · 243 阅读 · 0 评论 -
07.PyTorch深度学习实践——处理多维特征的输入
采用sigmoid激活函数import numpy as npimport torchimport matplotlib.pyplot as plt#这里之所以设置为float32是因为大部分显卡的存储都支持,只有少部分高端显卡支持doublexy = np.loadtxt('data/diabetes.csv.gz', delimiter=',', dtype=np.float32)x_data = torch.from_numpy(xy[:, :-1])y_data = torch.fr原创 2021-02-04 12:26:31 · 202 阅读 · 0 评论 -
06.PyTorch深度学习实践——逻辑斯蒂回归
逻辑回归主要用于二分类问题(Binary Classification),与线性回归的区别在于添加了sigmoid激活函数(sigmoid函数也叫Logistic函数),使线性回归预测值映射在(0,1)之间,代表二分类的概率;损失函数改为计算分布差异的损失函数BCELoss,计算分布差异的方法还有很多,如KL和Cross Entropy。在损失函数中有一个选项为是否求均值,这里是否都可,主要是对学习率有影响。import torchimport matplotlib.pyplot as pltimp原创 2021-02-03 11:56:26 · 160 阅读 · 0 评论 -
05.PyTorch深度学习实践——线性回归
使用Pytorch分四步:import torchimport matplotlib.pyplot as plt#1.准备数据x_data = torch.Tensor([[1.0], [2.0], [3.0]])y_data = torch.Tensor([[2.0], [4.0], [6.0]])#2.设计模型#必定要重写__init__和forward两个函数class LinearModel(torch.nn.Module): #定义模型 def __init__(原创 2021-02-02 16:26:54 · 114 阅读 · 0 评论 -
04.PyTorch深度学习实践——反向传播
import torchimport matplotlib.pyplot as pltx_data = [1.0, 2.0, 3.0]y_data = [2.0, 4.0, 6.0]w = torch.tensor([1.0])#tensor默认不计算梯度,需要手动开启w.requires_grad = True#x会自动转换为tensordef forward(x): return x * w#loss会构建计算图,看到loss就应该能画出计算图,这是一种理解方式d原创 2021-02-02 11:13:34 · 145 阅读 · 2 评论 -
03.PyTorch深度学习实践——梯度下降
梯度下降import matplotlib.pyplot as pltx_data = [1.0, 2.0, 3.0]y_data = [2.0, 4.0, 6.0]w = 1.0def forward(x): return x * wdef cost(xs, ys): cost = 0 for x, y in zip(xs, ys): y_pred = forward(x) cost += (y_pred - y) ** 2原创 2021-01-31 23:47:53 · 119 阅读 · 0 评论 -
02.PyTorch深度学习实践——线性模型
学习B站的PyTorch深度学习实践做练习记录欢迎去原视频一键三连支持upPyTorch深度学习实践import numpy as npimport matplotlib.pyplot as pltx_data = [1.0, 2.0, 3.0]y_data = [2.0, 4.0, 6.0]def forward(x): return x * wdef loss(x, y): y_pred = forward(x) return (y_pred - y) * (y_pred原创 2021-01-31 18:04:03 · 116 阅读 · 0 评论