- 博客(33)
- 收藏
- 关注
原创 spark-core编程2
文档通过简单示例展示了累加器的基本用法,还给出了自定义累加器实现wordcount的详细步骤,包括创建自定义累加器类,重写相关方法,以及在Spark程序中注册和调用自定义累加器。文档通过代码示例,展示了广播变量的使用过程,先创建广播变量,然后在RDD操作中使用广播变量的值,最终输出结果。- reduce:聚集RDD所有元素,先分区内聚合,再分区间聚合 ,如 rdd.reduce(_+_) 可对 RDD[Int] 类型数据求和。- takeOrdered:返回RDD排序后的前n个元素组成的数组。
2025-04-11 10:47:32
371
原创 spark-core编程
从 shuffle 的角度:reduceByKey 和 groupByKey 都存在 shuffle 的操作,但是 reduceByKey可以在 shuffle 前对分区内相同 key 的数据进行预聚合(combine)功能,这样会减少落盘的数据量,而 groupByKey 只是进行分组,不存在数据量减少的问题,reduceByKey 性能比较高。3. reduceByKey :对相同Key的Value进行聚合 ,相比 groupByKey ,在shuffle前可预聚合,性能更优。
2025-04-10 11:44:24
834
原创 spark RDD相关概念和运行架构
有向无环图(DAG):由Spark程序执行时数据流向抽象,用于表示程序拓扑结构,是第二代计算引擎支持特性,Spark为第三代计算引擎支持Job内部DAG和实时计算。- Driver:执行Spark任务main方法,负责将用户程序转为作业、调度任务、跟踪Executor执行情况、通过UI展示运行情况。- 执行原理:在Yarn环境下,经启动集群、申请资源、划分任务、发送任务步骤,RDD封装逻辑生成Task供Executor计算。- 依赖关系:含血统关系、窄依赖、宽依赖,介绍RDD任务划分及相关概念。
2025-04-09 18:07:00
296
原创 Scala安装
Spark的Local模式仅需要单个虚拟机节点即可,无需启动hadoop集群。在解压缩文件夹下的 data 目录中,添加 word.txt 文件。
2025-04-08 13:10:09
192
原创 Scala数组
Reduce 简化(归约) :通过指定的逻辑将集合中的数据进行聚合,从而减少数据,最终获取结果。单词计数:将集合中出现的相同的单词,进行计数,取计数排名前三的结果。遍历一个集合并从中获取满足指定条件的元素组成一个新的集合。集合中的每个元素的子元素映射到某个函数并返回新集合。将集合中的每一个元素映射到某一个函数。Fold 折叠:化简的一种特殊情况。按照指定的规则对集合的元素进行分组。
2025-04-08 09:25:03
319
原创 Scala数组
可变ListBuffer:可变集合,通过 collection.mutable.ListBuffer 导入,可实现元素的增删 ,如 ListBuffer(1, 2, 3) , += 添加元素。- 可变mutable.Map:经 scala.collection.mutable.Map 引入,可变,可进行键值对的增删改 ,如 mutable.Map("key" -> 1)。- 多维数组:用 Array.ofDim 创建,如 Array.ofDim[Int](3, 4) 表示3行4列数组。
2025-04-07 17:30:39
345
原创 Scala面向对象2
第二种,一个类(Sub)混入的两个 trait(TraitA,TraitB)中具有相同的具体方法,且两个 trait 继承自相同的 trait(TraitC),及所谓的“钻石问题”,解决这类冲突问题,Scala 采用了。由于一个类可以混入(mixin)多个 trait,且 trait 中可以有具体的属性和方法,若混入的特质中具有相同的方法(方法名,参数列表,返回值均相同),必然会出现继承冲突问题。2. 单例对象:用 object 声明,可包含属性和方法,能直接调用,伴生对象与伴生类同名,可访问类私有成员。
2025-04-03 11:31:13
568
原创 Scala面向对象
,包名用“.”进行分隔以表示包的层级关系,如com.zpark.scala。一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。如采用嵌套方式管理包,则包对象可与包定义在同一文件中,但是要保证包对象与包声明在同一作用域中。Scala 有两种包的管理风格,一种方式和 Java 的包管理风格相同,每个源文件一个包((1)如果主构造器无参数,小括号可省略,构建对象时调用的构造方法的小括号也可以省略。Scala 的面向对象思想和 Java 的面向对象思想和概念是一致的。
2025-04-02 17:56:37
821
原创 Scala函数式编程
解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的步骤,解决问题。解决问题,分解对象,行为,属性,然后通过对象的关系以及行为的调用来解决问题。:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包。函数的本质:函数可以当做一个值进行传递。万物皆对象对象的本质:对数据和行为的一个封装。一个函数/方法在函数/方法体内又调用了本身,我们称之为递归调用。:把一个参数列表的多个参数,变成多个参数列表。参数的类型可以省略,会根据形参进行自动的推导。
2025-04-01 12:11:11
748
原创 Scala基础
推荐使用函数式的风格解决break 和continue 的功能,而不是一个关键字。Scala 中使用breakable 控制结构来实现 break 和 continue 功能。说明:将遍历过程中处理的结果返回到一个新 Vector 集合中,使用 yield 关键字。While 和 do..While 的使用和 Java 语言中用法相同。循环遍历 10 以内的所有数据,奇数打印,偶数跳过(continue)输出 1 到 5 中,不等于 3 的值。说明:没有关键字,所以范围后一定要加。注意:开发中很少使用。
2025-03-31 17:49:20
224
原创 Scala基础
相比其他编程语言,Scala 代码更加简洁,往往一行代码就能实现其他语言多行代码的功能,开发效率更高。貌似与Java的基本数据类型的包装类型相同,但是scala没有基本数据类型与包装类型的概念,统一都是类。在Scala中,以下是基本数据类型:Byte、Short、Int、Long、Float、Double、Char、String、Boolean。Scala 中的运算符包括算术运算符(如 +、-、*、/ 等)、关系运算符(如 >、<、== 等)、逻辑运算符(如 &&、||、!
2025-03-28 10:47:14
535
原创 Scala 基础语法
Scala 的设计秉承一项事实,即在实践中,某个领域特定的应用程序开发往往需要特定于该领域的语言扩展。易学:大多数的 JVM 语言大部分可能会想到 Java,但 Java 做出来的 API 太丑,或者学习曲线陡峭,Scala 语言,为后续学习 Scala+Spark 奠定基础。然而以"$"开头的标识符为保留的 Scala 编译器产生的标志符使用,应用程序应该避免使用"$"开始的标识符,以免造成冲突。保存文件时,应该保存它使用的对象名称(记住Scala是区分大小写),并追加".scala"为文件扩展名。
2025-03-27 11:11:09
725
原创 U-net系列算法
5*64 =320 , 最终组合得到全部特征。M 训练的时候同样会用到L4 ,效果还不错。现在来看 , 很多视觉任务都可以套用这招。M 以前我们都是加法 , 现在全都要。这么简单的结构就能把分割任务做好。把能拼能凑的特征全用上就是升级版了。不同的max pool整合低阶特征。起初是做医学方向 , 现在也是。其实跟densenet思想一致。损失由多个位置计算 , 再更新。(X1和X2 , 轮廓之类的)也是很常见的事 , 多输出。(感受野大的 , 全局的)简单但是很实用 ,应用广。特征融合 ,拼接更全面。
2025-03-21 09:51:24
350
原创 图像分割项目
» 输出44,X = [x_0,x_1,x_2,x_3,x_4,x_5,x_6,x_7,x_8,x_9,x_{10},x_{11},x_{12},x_{13},x_{14},x_{15},x_{16}]» 输入44,X = [x_0,x_1,x_2,x_3,x_4,x_5,x_6,x_7,x_8,x_9,x_{10},x_{11},x_{12},x_{13},x_{14},x_{15}]· 实例分割:只预测前景目标的类别属性以及边框,个体ID,每一个像素可以属于多个ID。· 图像分割:预测目标的轮廓。
2025-03-20 10:29:52
363
原创 YOLO系列 - V4
V4中用的是SAM , 也就是空间的注意力机制 不光NLP,语音识别领域在搞attention , CV中也一样。- 例如原来标签为(0,1):[0,1]×(1 - 0.1)+0.1/2 = [0.05,0.95]并且还是一个捷径 , 红色的没准走个100层(Resnet) , 绿色的几层就到了。- 亲民政策,单GPU就能训练的非常好,接下来很多小模块都是这个出发点。M 注意力机制 , 网络细节设计 ,特征金字塔等 , 你能想到的全有。- 其中v函数考虑了三个几何因素:重叠面积,中心点距离,长宽比。
2025-03-14 10:58:40
224
原创 YOLO - V3
13×13特征图上:(116×90),(156×198),(373×326)- 26×26特征图上:(30×61),(62×45),(59×119)- 52×52特征图上:(10×13),(16×30),(33×23)- 特征做的更细致,融入多持续特征图信息来预测不同规格物体。- 先验框更丰富了,3种scale,每种3个规格,一共9种。- YOLO - V2中选了5个,这回更多了,一共有9种。- YOLO - V2中选了5个,这回更多了,一共有9种。- 3种scale,更多先验框。
2025-03-13 09:59:19
220
原创 YOLO-V1和YOLO-V2
K - means聚类中的距离:d(box, centroids) = 1 - IOU(box, centroids)- 最小的图像尺寸为320 x 320,最大的图像尺寸为608 x 608。- 最后一层时感受到太大了,小目标可能丢失了,需融合之前的特征。- V1训练时用的是224*224,测试时使用448*448。- 数据集一系列选择的先验比例都是常规的,但是不一定完全适合。- 这样会导致在x轴方向,模型不稳定,尤其是刚开始训练的时候。- 10 = (X,Y,H,W,C)*B(2个类别)
2025-03-12 16:50:19
356
原创 目标检测项目
(Xmin, Ymin, W, H),其中 x,y,w,h 均不是归一化后的数值,分别代表左上角坐标和宽、高。- 经典发展线:R - CNN、SPP - Net、Fast R - CNN、 Faster R - CNN。(Xmin,Ymin,Xmax,Ymax)分别代表左上角和右下角的两个坐标。- 其他:Cascade R - CNN、Guided Anchoring。· 类别+真实边界框坐标(x,y,w,h)(x,y,w,h)分别代表中心点坐标和宽、高。- YOLO系列:YOLO v1 - v5。
2025-03-11 10:51:46
821
原创 手写数字识别项目总结
【说明】model.train()与model.eval()的使用如果模型中有BN(Batch Normalization)层和Dropout,需要在训练时添加model.train(),在测试时添加model.eval()。定义损失函数可以通过自定义方法或使用PyTorch内置的损失函数,如回归使用的loss_fun=nn.MSELoss(),分类使用的nn.BCELoss等损失函数,更多内容可参考本书5.2.4节。所有的优化方法都是继承了基类optim.Optimizer,并实现了自己的优化步骤。
2025-03-10 17:36:45
389
原创 手写数字识别项目
而对于Dropout,model.train()是随机取一部分网络连接来训练更新参数,而model.eval()是利用到了所有网络连接。因图像是灰色的只有一个通道,如果有多个通道,需要有多个数字,如三个通道,应该是Normalize([n1,n2,n3], [n1,n2,n3])。定义损失函数可以通过自定义方法或使用PyTorch内置的损失函数,如回归使用的loss_fun=nn.MSELoss(),分类使用的nn.BCELoss等损失函数,更多内容可参考本书5.2.4节。
2025-03-06 10:27:42
1460
原创 集成算法的简介
基本思想:对于复杂任务,综合多个专家的判断比单个专家的判断更好,通过漫画形象地展示了三个“小专家”等同于一个“大专家”。集成学习(ensemble learning)是通过构建并结合多个学习器来完成学习任务。- 投票法:集成学习的结果通过投票法产生,即“少数服从多数”
2025-03-05 16:36:09
200
原创 使用卷积神经网络实现CIFAR
3. 函数的使用方式(未在图中给出,但通常的使用方式)2. 定义函数 paras_summary。4. 实例化模型并移动到设备上。1. 注册钩子函数条件判断。导入优化器模块并设置学习率。2.定义神经网络类 Net。计算并打印每个类别的准确率。3. 创建属性和注册钩子。4. 前向传播和移除钩子。1. 导入模块和设备设置。3. 定义前向传播函数。定义损失函数和优化器。计算并打印模型准确率。
2025-03-04 13:43:29
402
原创 使用卷积神经网络实现CIFAR
这段代码实现了对卷积神经网络的训练过程,通过多个epoch和批次的训练,不断调整模型参数,以最小化损失函数,从而使模型能够更好地对输入图像进行分类。这段代码为模型的训练做了准备工作,定义了损失函数和优化器,设置了学习率,并展示了模型的结构,后续可以基于这些设置进行模型的训练和评估。这段代码构建了一个简单的用于图像分类的卷积神经网络,并计算了模型的总参数数量,为后续的模型训练和评估做准备。这段代码是使用PyTorch框架进行数据加载和预处理的示例,主要涉及加载CIFAR - 10数据集。
2025-03-03 17:50:31
167
原创 图像分类项目
可以用来表示模型的精度,即模型识别正确的个数/样本的总个数。主对角线的元素之和为正确分类的样本数量,其余元素的值为错误分类的样本数量,其余元素的值越大,分类器准确率越高。准确率(Precision):又称为查准率,表示在模型识别为正类的样本中,真正为正类的样本所占的比例。召回率(Recall):又称为查全率,表示模型正确识别出为正类的样本的数量占总的正类样本数量的比值。被分类类别为第i类的数量,矩阵元素Cij表示第i类样本被分类类别为第j类的数量。·将不同的图像,划分到不同的类别标签,实现最小的分类误差。
2025-02-28 11:08:10
266
原创 Pytorch数据处理工具箱
如果要对数据集进行多个操作,可通过Compose将这些操作像管道一样拼接起来,类似于nn.Sequential。transforms提供了对PIL Image对象和Tensor对象的常用操作。transforms提供了对PIL Image对象和Tensor对象的常用操作。使用TensorBoard的一般步骤如下。使用TensorBoard的一般步骤如下。1)对PIL Image的常见操作如下。2)对Tensor的常见操作如下。其中,xxx指的是各种可视化方法。Pytorch数据处理工具箱。
2025-02-27 10:40:35
188
原创 Pytorch数据处理工具箱
_getitem_一次只能获取一个样本。2.DataLoader:可以批量处理。但是DataLoader并不是迭代器,可以通过“iter”命令转换成迭代器。数据处在不同目录之下时会不方便!DataLoader:可以批量处理。Pytorch数据处理工具箱。
2025-02-26 17:16:30
192
原创 Pytorch神经网络工具箱
另一种为使输入与输出形状一致,需添加通过1x1卷积调整通道和分辨率。·残差块有两种,一种是正常的模块方式,将输入与输出相加,然后应用激活。·组合这两个模块得到现代经典ResNet18网络结构。继承nn.Module基类并应用模型容器构建模型。1.使用nn.Sequential模型容器。2.使用nn.ModuleList模型容器。2.使用nn.ModuleDict模型容器。5.循环测试及验证模型。1.加载预处理数据集。
2025-02-25 18:08:26
505
原创 Pytorch神经网络
nn.functional中的函数,写法一般为nn.functional.xxx,如nn.functional.linear、nn.functional.conv2d、nn.functional.cross_entropy等。构建神经网络的主要工具 - nn.functional nn.Module,写法一般为nn.Xxx,如nn.Linear、nn.Conv2d、nn.CrossEntropyLoss等。使用nn.Sequential按层顺序构建模型。构建神经网络的主要工具 - nn.Module。
2025-02-24 16:28:00
331
原创 卷积神经网络
通过构建具有一定“深度”的模型,可以让模型来自动学习好的特征表示(从底层特征,到中层特征,再到高层特征),从而最终提升预测或识别的准确性。· AlexNet的架构与LeNet相似,但使用了更多的卷积层和更多的参数来拟合大规模的ImageNet数据集。特点:比AlexNet更深更大,以获得更强性能,更多的卷积层,更小的卷积核(3x3),将卷积层组合成块。模块(VGG块):3x3卷积(填充=1,步幅=1),2x2最大池化层(步幅=2),更深和更窄更好。中层:中层卷积核提取条纹、纹路、形状等中层纹理特征。
2025-02-21 10:32:41
240
原创 卷积神经网络
总结填充步幅可改变输出的高度和宽度填充在输入周围添加额外的行/列,增加输出的高度和宽度步幅是每次滑动核窗口时的行/列的步长,可以成倍的减少输出形状填充和步幅可用于有效地调整数据的维度 多个输入和输出通道指出转换为灰度图可能丢失RGB三个通道信息。填充给定输入图像(32×32)应用5×5卷积核第一层得到的输出大小为28×28第七层得到的输出大小4×4更大的卷积核可以更快的减少输出填充:在输入周围添加额行/列。每个通道有卷积核,结果是所有通道卷积结果的和。平均池化层:将最大池化中的"最大"操作替换为"平均"
2025-02-20 11:02:24
141
原创 多层感知机
在多层感知机中,激活函数起到了关键作用,像阶跃函数、S型函数(sigmoid)、双曲正切函数(tanh)和ReLU函数等,它们为神经网络增添了非线性特性,使网络能够学习到更复杂的模式。在神经网络的学习过程中,核心是对可变权重的动态调整,通过正向传播和反向传播算法,修正各层神经元的权重,以最小化训练误差。感知机和神经网络不断发展,从基础的理论模型到如今在图像识别、自然语言处理等众多领域的广泛应用,它们为人工智能的进步提供了强大动力,也让我们对智能系统的构建有了更深入的理解。
2025-02-19 17:19:25
200
原创 线性回归和softmax回归
在这个过程中,损失函数扮演着重要的监督角色,它量化了预测值与真实值之间的差距,常见的回归问题损失函数如平方损失,帮助我们评估模型的优劣并指导模型的优化方向。总之,线性回归和softmax回归等算法在图像识别技术中相互配合,从数据的特征提取、模型的构建优化到最终的预测分类,每一个环节都凝聚着众多研究者的智慧。不同的损失函数在回归和分类任务中有着不同的表现。在图像识别技术的广阔领域中,线性回归和softmax回归等算法是其中的重要基石,它们各自发挥着独特的作用,助力图像识别实现更精准的预测与分类。
2025-02-18 11:23:46
140
原创 图像识别技术与应用
机器学习中的关键组件:阐述了机器学习中都会遇到的组件,如学习的问题、数据、目标函数、调整目标函数的算法等;日常生活中的机器学习:以判断天气好坏、西瓜成熟度为例,说明机器学习在生活中的体现;短视频、搜索、新闻推荐;人工智能:定义为用人工方法在计算机上实现的智能,是研究、开发用于模拟、延伸和扩展人类智能的理论、方法、技术及应用系统的一门技术科学,并对其与计算器功能进行了对比区分。生活方式的转变:列举了智能语音调控灯光系统、自动驾驶、人脸识别考勤、智能购物、智慧医疗、智慧试衣等,体现人工智能对生活的影响。
2025-02-17 17:46:40
174
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人