自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 Ai模型-PyTorch和Tensorflow的区别

PyTorch更适合快速开发、原型设计、学术研究和动态变化的模型构建场景。TensorFlow适合大规模的生产环境,尤其是需要跨设备部署、分布式训练或是完整机器学习流水线的任务。技术选型时可以基于项目需求、开发人员的经验以及未来的生产需求来选择。如果你的任务是实验性质的,PyTorch 更为灵活;如果你计划进行大规模生产部署,TensorFlow 的生态系统无疑更为完善。

2025-01-14 16:49:36 2584

原创 Ai模型-感受野

在实际应用中,合理调整感受野大小对网络的设计至关重要,通过调整卷积核、池化层和网络深度等手段,可以灵活控制感受野,从而提高模型性能。感受野的大小直接影响了网络对输入图像的理解能力,较大的感受野能够捕捉到图像中的全局信息,而较小的感受野则只能看到局部的细节。例如,使用7×7 的卷积核会让每一层的神经元感受野更大,这适合处理较大范围的特征,如检测图像中的大物体。第二层:这一层的感受野可以看到第一层感受野的3×3 区域,加上第二层的卷积核,感受野大小为5×5。每一层的感受野大小是前一层感受野的累积结果。

2025-01-14 16:48:35 684

原创 Ai模型-PyTorch训练模型

使用 PyTorch 训练模型的步骤可以总结为以下几个主要阶段:准备数据、定义模型、设置损失函数和优化器、训练模型和评估模型。在评估时,我们不需要反向传播,只需要使用模型对测试数据进行预测,然后计算预测值与真实标签的匹配程度,得出准确率。训练完模型后,你可以使用测试数据来评估模型的表现。反向传播:计算模型中每个参数的梯度(这些梯度告诉模型参数应该如何调整以减少损失)。训练模型:通过前向传播计算预测值,通过反向传播计算损失并更新模型参数。设置损失函数和优化器:使用合适的损失函数和优化器来调整模型参数。

2025-01-14 16:44:28 484

原创 Ai模型-对抗生成网络

是由Ian Goodfellow等人在2014年提出的一种深度学习模型,广泛用于生成高质量的图像、视频、文本等数据。GAN通过两个神经网络(生成器和判别器)之间的对抗性博弈,来生成与真实数据分布相似的伪造数据。其独特的训练方式使得GAN在许多生成任务中表现出色。

2025-01-14 16:41:14 601

原创 Ai模型-卷积神经网络

CNN 之所以被称为卷积网络,是因为它在模型的核心部分使用了 卷积操作(Convolution Operation),这种操作擅长捕捉数据中的局部模式(如图像中的边缘、角点等)。ResNet(2015年):提出了 残差网络(Residual Network),通过引入 残差连接(Skip Connections),解决了深层网络中梯度消失的问题,使得模型可以构建非常深的网络(超过 100 层)。局部连接性和共享权重:卷积层通过局部感知(局部连接)和共享权重的机制,大大减少了参数数量,提高了模型的计算效率。

2025-01-11 11:46:09 649

原创 Ai模型-模型微调

它指的是基于已经预训练的模型,在特定的任务或数据集上进行二次训练,以提升模型在该任务上的性能。通常情况下,预训练模型的底层(靠近输入的层)会提取一些通用特征,这些特征对于大多数任务都是有用的,因此可以保留而不进行更新。例如,在一个新任务中,如果有 10 个类别,需要在原模型的基础上添加一个包含 10 个输出节点的分类层。提高模型性能:通过微调,模型可以根据新任务的特性进一步优化,从而在特定任务上达到较高的性能。冻结部分层:为了保留预训练模型中已有的知识,通常会冻结模型的前几层,只微调最后几层的参数。

2025-01-11 11:43:31 694

原创 Ai模型-卷积核尺寸

卷积核尺寸是指在卷积层中使用的滤波器(即卷积核,或称为滤波器)的宽度和高度。网络的深度增加时,多个3x3卷积核叠加效果等同于更大的卷积核(如5x5或7x7),但参数更少,计算开销也较低。在这个例子中,我们使用了一个3x3的卷积核,输入图像的尺寸是32x32x3,经过卷积层后,特征图的尺寸变为32x32x16。大尺寸卷积核(如5x5或7x7)的参数更多,计算复杂度更高,因此在设计深度学习模型时通常倾向于减少这种大核的使用,或者通过降采样、池化等方式减小输入特征图的尺寸,减少计算负担。

2025-01-11 11:40:31 725

原创 Ai模型-训练过拟合

过拟合指的是模型在训练数据上表现得非常好,能够很好地拟合训练集,但在新的、未见过的数据(如验证集或测试集)上表现较差。交叉验证(Cross-Validation) 是一种模型评估方法,通过将数据集分成多个子集,反复使用不同的子集进行训练和验证,来减少模型对某一特定训练集的依赖。这会导致模型在实际应用场景中的预测效果不佳,因为在实际应用中,模型面对的大多是它未见过的新数据。训练时间过长:即使数据足够,但如果训练的迭代次数过多,模型也有可能过度拟合训练集,从而在新数据上表现不好。

2025-01-11 11:38:21 607

原创 Ai模型-TensorFlow训练模型

使用 TensorFlow 训练一个模型的步骤大体上和其他深度学习框架类似,主要分为准备数据、定义模型、编译模型、训练模型、评估模型、保存模型几个部分。在定义好模型结构之后,我们需要编译模型,指定损失函数、优化器和评估指标。训练完模型之后,我们可以在测试集上评估模型的表现,看看模型在未见过的数据上表现如何。epochs:训练的轮数,每轮训练是指完整地用所有数据训练一次模型。保存模型:将训练好的模型保存到文件中,便于后续使用或部署。训练完模型后,我们通常需要将模型保存下来,以便以后使用。

2025-01-11 11:35:40 694

原创 Ai模型-池化层

在深度学习中,过拟合是常见问题。通过减少特征图的尺寸,池化层可以减少模型参数,从而降低模型复杂度,减少过拟合的风险。在卷积神经网络的层次结构中,池化层通常用于减少特征图的尺寸,即从高分辨率图像特征逐步提取出更紧凑的低分辨率特征图。例如,假设输入为一个 4×4 的矩阵,使用2×2 的窗口进行最大池化,结果是每个2×2 区域内的最大值作为输出,特征图会降采样为 2×2。池化层没有参数(不像卷积层需要学习权重),但它通过减少特征图的尺寸,间接减少了后续层的参数数量,从而加快训练速度并减少内存消耗。

2025-01-11 11:30:35 2015

原创 Ai模型-边缘填充

边缘填充(Padding) 是在卷积神经网络(CNN)中,输入数据的边缘增加额外的像素,以调整输出特征图的尺寸或保留输入数据的空间信息。通过边缘填充,可以控制卷积操作后的输出特征图与输入的大小关系,同时避免图像边缘信息的丢失。SAME 填充 是一种常见的填充方式,它会在输入的边缘添加足够的像素,使得卷积操作后的输出特征图与输入的尺寸相同。边缘填充 就是为了解决这个问题,在输入数据的边缘加上额外的像素(通常是 0),以保证卷积核在边缘也能正常进行计算,从而控制输出特征图的尺寸。1×1,导致丢失空间信息。

2025-01-11 11:28:02 779

原创 Ai模型-数据增强

常见的数据增强库(如Keras、PyTorch、TensorFlow等)提供了多种组合变换的功能,能够随机应用一系列变换,从而产生多样化的训练数据。常用的增强方法包括平移、缩放和随机裁剪,这些操作能够模拟物体在不同场景中的不同位置和大小变化,提升模型的检测准确性。数据增强可以帮助生成更多的训练数据,例如对医疗图像进行旋转、翻转和裁剪等,提升模型对不同患者、不同扫描角度和不同分辨率下图像的识别能力。在线数据增强:在模型训练过程中实时进行变换,不需要保存变换后的数据样本,节省了存储空间,但会增加计算成本。

2025-01-11 11:24:16 1983

原创 Ai模型-PyTorch基础

如果你学过 Excel,那么张量就像一个超级版本的 Excel 表格,但它可以有很多维度,也可以在 GPU 上快速进行计算。比如,一个一维张量就像一行数据,二维张量就像一个表格,三维张量就像一本有很多页的表格。PyTorch 是一个非常灵活和强大的深度学习工具,它让你可以很方便地使用 GPU 加速运算,搭建自己的神经网络模型,并且通过它强大的自动求导功能帮助你快速训练模型。神经网络模型是深度学习的核心。这个模型的意思是,它从输入的10个数字(比如一个表格里有10列)开始,经过两步计算,最后输出2个结果。

2025-01-11 11:20:55 888

原创 Redis高可用集群

当客户端向一个错误的节点发出了指令,该节点会发现指令的 key 所在的槽位并不归自己管理,这时它会向客户端发送一个特殊的跳转指令携带目标操作的节点地址,告诉客户端去连这个节点去获取数据。奇数个master节点可以在满足选举该条件的基础上节省一个节点,比如三个master节点和四个master节点的集群相比,大家如果都挂了一个master节点都能选举新master节点,如果都挂了两个master节点都没法选举新master节点了,所以奇数的master节点更多的是。Rank越小代表已复制的数据越新。

2025-01-10 22:44:26 723

原创 Redis持久化

auto-aof-rewrite-percentage 100 //aof文件自上一次重写后文件大小增长了100%则再次触发重写。来源:品维云App--为什么可以为您信用做背书?

2025-01-10 22:42:41 341

原创 Redis高性能原理

正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。Redis的IO多路复用:redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。Redis 单线程如何处理那么多的并发客户端连接?

2025-01-10 22:41:57 111

原创 Mysql日志机制

STATEMENT:基于SQL语句的复制,每一条会修改数据的sql都会记录到master机器的bin-log中,这种方式日志量小,节约IO开销,提高性能,但是对于一些执行过程中才能确定结果的函数,比如UUID()、SYSDATE()等函数如果随sql同步到slave机器去执行,则结果跟master机器执行的不一样。还有一种折中方式,可以设置为N(N>1),表示每次提交事务都write 到page cache,但累积N个事务后才 fsync 写入磁盘,这种如果机器宕机会丢失N个事务的binlog。

2025-01-10 22:41:00 761

原创 mysql事务

1.ACID2.并发事务处理带来的问题3.事务隔离级别4.大事务的影响5.事务优化

2025-01-10 22:39:57 212

原创 jvm垃圾回收器

CMS等垃圾收集器的关注点更多的是用户线程的停顿时间(提高用户体验)。重新标记: 重新标记阶段就是为了修正并发标记期间因为用户程序继续运行而导致标记产生变动的那一部分对象的标记记录(主要是处理漏标问题),这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短。它的 “单线程” 的意义不仅仅意味着它只会使用一条垃圾收集线程去完成垃圾收集工作,更重要的是它在进行垃圾收集工作的时候必须暂停其他所有的工作线程( "Stop The World" ),直到它收集结束。

2025-01-10 22:38:52 702

原创 搭建ShardingJDBC

​ 我们预备将一批课程信息分别拆分到两个库中的两个表里。

2025-01-10 22:37:49 954

原创 深入理解阻塞队列 BlockingQueue 原理

BlockingQueue 是一个接口,继承自 Queue,它允许在队列满时阻塞生产者线程,在队列空时阻塞消费者线程。简单来说,当生产者想要往队列中添加元素,但队列已满时,它会被阻塞;它是一种支持阻塞操作的队列,可以有效地处理多线程环境中的生产者-消费者问题。LinkedBlockingQueue:基于链表的阻塞队列,可以选择有界或无界,性能较高。合理配置队列大小:根据实际需求设置合适的队列大小,防止过度占用内存或造成频繁的阻塞。避免忙等:生产者和消费者在队列满或空的情况下会自动挂起,避免了忙等待的浪费。

2025-01-10 22:35:46 845

原创 并发编程之CAS

1.什么是CAS?2.CAS操作包含三个参数3.CAS操作的执行过程如下4.cas特性

2025-01-10 22:30:52 289

原创 DDD领域设计概念

聚合是一种领域对象的组合,它定义了一组相关的对象,其中一个对象充当聚合根(Aggregate Root),并负责维护聚合内部的一致性和封装。限界上下文是领域驱动设计中的一个关键概念,指的是一个明确定义了特定领域模型的边界,包括领域实体、值对象、聚合根、仓储和领域服务。聚合根是唯一有外部引用的对象,外部代码只能通过聚合根来访问聚合内部的对象。聚合根是聚合内部的一个特殊对象,它是聚合的入口点,负责协调和管理聚合内部的所有对象。工厂的主要任务是隐藏对象的创建细节,以确保对象的创建过程符合特定的规则和约束。

2025-01-10 22:28:50 534

原创 并发可见性、有序性、原子性与JMM 内存模型

可见性是指在多线程环境中,一个线程对共享变量的修改,另一个线程能够及时看到。默认情况下,Java 中的变量并不是线程安全的,修改后的值可能不会立即对其他线程可见。由于缓存和编译优化的原因,线程 B 可能读取到的是线程 A 修改前的值。满足 happens-before 的操作,其结果对后续的操作是可见的。有序性是指程序执行的顺序。我们通常希望程序的执行顺序与代码的顺序一致,但在多线程环境中,编译器和 CPU 的优化可能导致执行顺序被打乱。主内存是所有线程共享的,线程对变量的操作最终都要同步到主内存中。

2025-01-09 17:24:02 800

原创 并发容器(Map、List、Set)原理及其实战

并发容器,特别是 Map、List 和 Set,为我们提供了在多线程环境中处理数据的解决方案。与普通的集合类相比,它们提供了更好的性能和更高的安全性,避免了手动加锁的麻烦。在观察者模式中,我们可以使用 CopyOnWriteArrayList 来管理观察者列表,确保在迭代时的线程安全。在设计多线程应用时,除了使用并发容器,还应注意其他优化措施,如减少锁的粒度、使用无锁算法等,尽量减少线程间的竞争。ConcurrentHashMap 是一个线程安全的哈希表实现,它使用了分段锁的机制来提高性能。

2025-01-09 17:21:36 444

原创 深入理解 AQS 之 ReentrantLock 分析

特别是 ReentrantLock,它不仅是最常用的锁之一,也是理解 Java 并发编程的关键。在深入理解 ReentrantLock 和 AQS 的过程中,我们不仅掌握了锁的基本概念,也看到了它们在并发编程中的重要性。ReentrantLock 提供了灵活而强大的锁机制,使得我们能够更好地管理多线程环境中的共享资源。获取锁时,调用 lock() 方法,释放锁时,调用 unlock() 方法。等待队列中保存了请求获取锁的线程,AQS 会根据线程请求的顺序来管理这些线程。

2025-01-09 17:17:53 611

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除