2024年6月10日~2024年6月16日周报

news2024/11/24 12:35:09

文章目录

  • 一、前段时间工作
  • 二、完成情况
    • 2.1 可变形卷积的学习
      • 2.1.1 Introduction-介绍
      • 2.1.2 Related Work-相关工作
      • 2.1.3 Method-方法
        • 2.1.3.1 可变形卷积动态属性的重认识
        • 2.1.3.2 Speeding up DCN—加速DCN
    • 2.2 部署可变形卷积
  • 三、假期计划

一、前段时间工作

  在之前一段时间主要完成了以下任务的学习:

  • 1.完成毕业设计;
  • 2.学习师兄的Deepwave博客;
  • 3.部署可变形卷积v4

二、完成情况

2.1 可变形卷积的学习

  • 标题: Efficient Deformable ConvNets: Rethinking Dynamic and Sparse Operator for Vision Applications(高效的可变形ConvNets:重新思考视觉应用中的动态和稀疏算子
  • 代码:https://github.com/OpenGVLab/DCNv4
  • 摘要:我们介绍了Deformable Convolution v4(DCNv4),这是一个针对广泛视觉应用设计的高效有效的运算符。DCNv4解决了其前身DCNv3的限制,且有两个关键的增强: 1. 在空间聚合中移除了softmax归一化,以增强其动态特性和表达能力;2. 优化内存访问以减少冗余操作以提高速度。 这些改进使DCNv4相比DCNv3具有显著更快的收敛速度和大幅提高的处理速度,DCNv4的前向计算速度超过了其前身的三倍。DCNv4在各种任务中表现卓越,包括图像分类、实例和语义分割,尤其在图像生成方面。将其与诸如潜在扩散模型中的U-Net等生成模型相结合时,DCNv4的表现优于其基线,表明它在提升生成模型方面具有潜力。在实际应用中,将DCNv3替换为DCNv4到InternImage模型中以创建FlashInternImage,带来了高达80%的速度提升和更好的性能,无需进一步修改。DCNv4在速度和效率上的改进,加上其在各种视觉任务中出色的性能,展示了其作为未来视觉模型基础构建模块的潜力。

2.1.1 Introduction-介绍

  在计算机视觉领域,关于卷积网络(ConvNets)和Transformer哪个性能更优的讨论一直存在。近年来,带有注意力机制的Transformer模型已经在大型视觉模型中取得了显著成果[12,25,44],显示出超越ConvNets的潜力。然而,像InternImage [38]和ConvNeXt [26]等最近的工作表明,基于ConvNet的视觉模型保留了强大的性能、效率、简单性和适合各种下游任务的归纳偏差[15,41]。值得注意的是,在图像生成[29,31]等领域,卷积仍然是首选方法。这种情况揭示了基于卷积的方法的持久价值。

  基于卷积的优势,DCNv3(Deformable Convolution v3)作为先进ConvNet模型InternImage的核心运算符,创新地将稀疏注意力机制与卷积结合起来:它以滑动窗口的方式处理每个输出位置,窗口大小较小(例如3×3=9个点),这充当了类似卷积的局部、稀疏运算符,同时通过自适应范围动态采样点,并根据输入相关的注意力权重聚合空间特征。由于其较小的窗口大小和ConvNet的归纳偏差,预计DCNv3将实现更快的收敛速度和更低的推断延迟,特别是与密集全局[12]或基于局部窗口[25]的注意力方法相比。

  尽管具有这些优势,DCN并没有成为视觉骨干模型的首选解决方案。这一观察结果促使我们调查DCN运算符的持续限制。我们首先注意到的是运行速度。DCN的缓慢速度被认为是一个长期存在的问题,因为它在采样非附近位置时引入了额外的开销,使其不适用于现代卷积算法。我们的比较分析(如图1a所示)显示,DCNv3甚至可能比经过适当优化的密集全局注意力还要慢,突显了进一步优化的必要性。此外,我们发现在初始骨干训练阶段,DCNv3甚至比全局注意力收敛速度更慢,如图1b所示,这与直觉相反,因为DCNv3配备了ConvNet的归纳偏差。

在这里插入图片描述

图1. (a) 相对运行时间以DCNv3为基准。DCNv4比DCNv3显著提速,并超越其他常见的视觉运算符。(b) 在相同的网络架构下,DCNv4比其他运算符更快地收敛,而DCNv3在初始训练阶段落后。

  为了克服这些挑战,我们提出了Deformable Convolution v4(DCNv4),这是对稀疏DCN运算符进行实用效率优化的创新进展。DCNv4具有更快的实现和改进的运算符设计,以增强其性能,我们将在以下内容中详细阐述:

  • 首先,我们对现有实现进行指令级别的内核分析,发现DCNv3已经非常轻量级。计算成本不到1%,而内存访问成本占了99%。这促使我们重新审视运算符的实现方式,并发现DCN前向过程中的许多内存访问是冗余的,因此可以进行优化,从而实现了更快速的DCNv4实现。
  • 其次,受卷积的无界权重范围启发,我们发现空间聚合中的softmax归一化(密集注意力中的标准操作)在DCNv3中是不必要的,因为它不要求每个位置都有专用聚合窗口的操作。直观地说,softmax将权重限制在0到1的有界范围内,可能限制了聚合权重的表达能力。这一观点启发我们在DCNv4中移除了softmax,增强了其动态特性并提高了性能。

  因此,DCNv4不仅收敛速度显著快于DCNv3,而且前向速度提升了超过3倍。这一改进使得DCNv4能充分发挥其稀疏属性,成为最快速的常见核心视觉运算符之一。

  我们进一步将InternImage中的DCNv3替换为DCNv4,创建了FlashInternImage。值得注意的是,与未进行任何额外修改的InternImage相比,FlashInternImage实现了50%到80%的速度提升。这一增强将FlashInternImage定位为最快速的现代视觉骨干网络之一,同时保持卓越的性能。在DCNv4的帮助下,FlashInternImage在ImageNet分类和迁移学习设置中显著提高了收敛速度,并在下游任务中进一步展示了改进的性能。

  此外,DCNv4在各种架构和任务中都显示出作为通用视觉运算符的潜力。我们将DCNv4整合到其他现代骨干架构中,包括ConvNeXt [26]和ViT[12],替换深度可分卷积[35]和密集自注意力层[35]。令人惊讶的是,在没有任何超参数调整的情况下,这些精心设计的具有DCNv4的网络表现相当,同时速度更快,展示了动态稀疏DCNv4的有效性和效率。此外,我们探索了将DCNv4应用于生成模型作为新的应用领域的潜力。具体而言,我们将其应用于用于潜在扩散模型的U-Net架构,替换常规卷积。我们的实验结果显示,DCNv4在图像生成方面的表现优于基准线,显示了使用DCN来改进生成模型的巨大潜力。

  我们将发布DCNv4的实现,并希望这一高效的运算符能促进视觉领域未来的研究。

2.1.2 Related Work-相关工作

  • 视觉模型中的核心运算符:标准卷积[17]是最流行和最有影响力的运算符,构成了大多数计算机视觉架构的基础[14,16,32]。然而,许多具有独特特性的运算符共同在计算机视觉的发展中起着关键作用。深度可分离卷积(DWConv)[6]分离了空间和通道操作,在开发轻量级和高效模型方面至关重要[26,27]。RepLKNet [11]表明,纯卷积网络利用大核深度可分卷积可以在效率和有效性方面达到竞争性的性能。可变形卷积(DCN)系列[7,38,47]通过向卷积内核添加可学习的偏移量,显着提高了卷积的适应性。与卷积相反,注意力机制[35]具有建模远程依赖关系的能力,并已成功应用于各种计算机视觉任务[3,12,24,33]。窗口注意力[25,36]通过将注意力操作限制在固定大小的窗口中,降低了原始注意力的计算复杂度。为了减轻原始注意力所带来的高计算复杂度,可变形注意力[48]使每个查询能够集中在选定数量的关键采样点上,并动态确定位置和权重。这种有效的方法广泛用于以下领域的感知方法[4,19,21,22,43,45]。DynamicConv [40]和dynamicDWNet [13]通过结合动态权重[4,19,21,22,43,45]来增强深度可分卷积(DWConv),从而实现了动态权重的使用,使其能够动态适应。对于非网格结构化数据,稀疏算子[34,37,42]利用通过双线性插值或参数化方式获得的动态权重。
  • 视觉骨干中的内存访问成本(MAC):正如以前的研究所强调的那样[18,27],FLOP虽然是衡量模型复杂性的常用指标,但并不能准确地表示模型的速度或延迟。在实际场景中,模型的运行速度受到多种因素的影响,而不仅仅是FLOP。在这种情况下,内存访问成本(MAC)起着特别重要的作用[27]。Flash—Attention [9]通过减少对高带宽内存(HBM)的访问次数,在实践中实现了更快的速度,尽管与普通注意力相比具有更高的FLOP。虽然DCN运营商在FLOP方面没有表现出劣势,但在相同的FLOP预算下,它们的延迟与DW—Conv相比要长得多,这主要是由于大量的存储器访问成本。在这项工作中,我们进行了深入的分析和优化的内存访问成本与DCN运营商,显着加快DCN的运行速度。

2.1.3 Method-方法

2.1.3.1 可变形卷积动态属性的重认识

  重温DCNv3:给定输入 x ∈ R H × W × C x \in \mathbb{R}^{H\times W \times C} xRH×W×C,其中高度为 H H H,宽度为 W W W,通道数为 C C C。对于每个点 p 0 p_{0} p0,使用 K K K个点定义了DCNv3操作,如方程(2)所示:
y g = ∑ k = 1 K m g k x g ( p 0 + p k + Δ p g k ) , (1) \mathbf{y}_{g} = \sum_{k=1}^{K}\mathbf{m}_{gk}\mathbf{x}_{g}(p_{0}+p_{k}+\Delta p_{gk}) ,\tag{1} yg=k=1Kmgkxg(p0+pk+Δpgk),(1)
y = c o n c a t ( [ y 1 , y 2 , … , y G ] , a x i s = − 1 ) , (2) \mathbf{y} = \mathbf{concat}([\mathbf{y}_1,\mathbf{y}_2,\dots,\mathbf{y}_G],axis=-1),\tag{2} y=concat([y1,y2,,yG],axis=1),(2)

  其中, G G G表示空间聚合组的数量。对于第 g − t h g-th gth个组, x g , y g ∈ R H × W × C \mathbf{x}_g,\mathbf{y}_g\in\mathbb{R}^{H\times W \times C} xg,ygRH×W×C表示具有 C ′ = C / G C^{'}=C/G C=C/G的组维数的切片输入/输出特征图; m g k ∈ R \mathbf{m}_{gk}\in\mathbb{R} mgkR表示第 g g g组中第 k k k个采样点的空间聚合权重(也称为调制标量),它是对输入 x x x条件化并通过softmax函数在维度 k k k上进行归一化的; p k p_{k} pk表示预定义网络采样的第 k k k个位置{(-1,-1),(-1,0),…,(0,+1),…,(+1,+1)}就像常规卷积中一样,并且 Δ p g k \Delta p_{gk} Δpgk是与第 g g g组中网络采样位置 p k pk pk对应的偏移量。在DCNv3运算符之前和之后可以对x和y进行1×1点卷积,以增强模型的表达能力[6],遵循可分离卷积的方法。DCNv3是卷积和注意力的组合:一方面,它以滑动窗口的方式处理输入数据,这遵循了卷积的方式并具有其归纳偏差;另一方面,采样偏移量∆p和空间聚合权重m是从输入特征动态预测的,显示了其动态特性,并使其更像是一个注意力机制。我们比较了不同的运算符,每个运算符都有其自己的特性,如图2所示。
在这里插入图片描述

图2. 在空间聚合中,对于同一通道内不同位置的查询像素,核心运算符的比较。(a) 注意力和 (b) DCNv3 使用有界的(范围从0到1)动态权重来聚合空间特征,而注意力的窗口(采样点集)是相同的,DCNv3 对每个位置使用一个专用窗口。(c) 卷积具有更灵活的无界值范围的聚合权重,并对每个位置使用专用滑动窗口,但窗口形状和聚合权重与输入无关。(d) DCNv4 结合了它们的优点,使用自适应聚合窗口和动态聚合权重,具有无界值范围。

  Softmax 归一化:卷积和 DCNv3 之间的一个关键区别在于,DCNv3 使用 softmax 函数对空间聚合权重 m 进行归一化,遵循了缩放点积自注意力的惯例。相反,卷积没有在其权重上使用 softmax,但仍然能够很好地工作。注意力需要 softmax 的原因很明显:带有 Q 、 K 、 V ∈ R N × d Q、K、V\in\mathbb{R}^{N\times d} QKVRN×d的缩放点积自注意力的定义如下:

s o f t m a x ( 1 d Q K T ) (3) softmax(\frac{1}{\sqrt{d}}QK^{T})\tag{3} softmax(d 1QKT(3)

  其中,N 是同一注意力窗口中的点的数量(可以是全局的[12]或局部的[25]),d 是隐藏维度,Q、K、V 是从输入计算得到的查询、键和值矩阵。在注意力中,Eq. (3) 中需要进行 softmax 操作;如果没有 softmax,可以先计算 K T V ∈ R d × d K^TV ∈ \mathbb{R}^{d×d} KTVRd×d,并且对于同一注意窗口中的所有查询,它退化为线性投影,从而导致性能退化。然而,对于深度卷积和 DCNv3 等卷积运算符,每个点都有自己专用的聚合窗口,并且每个聚合窗口中的值已经不同,而且没有“键”概念,因此这种退化问题不再存在,归一化变得不再必要。事实上,对于在固定的 0-1 范围内使用 softmax 对卷积权重进行归一化可能会对运算符的表达能力造成显著的限制,并且使学习速度变慢。

  为了验证这一假设,我们训练了一个 ConvNeXt 模型,并在卷积前将深度卷积权重的 7×7 窗口应用了 softmax。从表1的结果中,我们观察到模型性能以及收敛速度显著下降。这表明,对于每个位置都有专用聚合窗口的运算符(如卷积或 DCN),具有无界范围的聚合权重比 softmax 归一化的有界范围权重具有更好的表达能力。
在这里插入图片描述

表1. 不同训练时期的ImageNet-1K准确度。对卷积权重添加softmax归一化显著影响了ConvNeXt模型的收敛速度和最终性能。

  增强动态特性:受到这一观察的启发,我们在DCNv3中移除了softmax归一化,将调制标量从0到1转换为与卷积类似的无界动态权重。如图2所示,这种改变进一步增强了DCN的动态特性,其中其他运算符具有一定的限制,如有界值范围(注意力/DCNv3)或固定聚合窗口与输入无关的聚合权重(卷积)。图1b显示,通过进行这种改变,DCNv4的收敛速度显著快于DCNv3和其他常见运算符,包括卷积和注意力。第4节的结果进一步展示了DCNv4在预训练和迁移学习设置中的良好表现。

2.1.3.2 Speeding up DCN—加速DCN

  理论上,DCN作为一个使用3×3窗口的稀疏运算符,应该比其他使用更大窗口大小的常见运算符,如密集注意力或7×7深度卷积,更快地执行。然而,我们发现事实并非如此,如图1a所示。在本小节中,我们首先对GPU效率进行了理论分析,显示了根据我们如何读取内存而产生的内存访问成本的巨大差异。我们进一步根据观察结果进行了优化,通过节省额外的内存指令,显著提高了DCN的速度,并将作为稀疏运算符的速度优势带入了现实。

  GPU效率的理论分析:我们的研究从对DCNv3运算符的计算行为进行理论检查开始。我们采用屋顶线模型评估其性能,重点关注理论FLOPs和内存访问成本(MAC)。对于形状为(H,W,C)的输入和输出张量,DCNv3运算符需要36HWC个FLOPs,其中3×3表示卷积核的空间维度,因子4考虑了每个采样点的双线性插值。

  根据[27]中概述的框架,DCNv3的内存访问成本(MAC)被计算为2HWC + 27HWG。第一项对应于输入/输出特征图的大小,第二项对应于DCNv3的偏移和聚合权重,其中G表示组数。我们将G近似为C/16,假设每个组的维度为16,因此得到约3.7HWC个MAC。然而,这假设了一个理想的情况,即具有无限缓存且每个值只需单个内存读取,这在并行计算环境中通常是不现实的,因为并发线程执行需要同时访问数据。

  为了估计最大的内存访问需求,我们考虑了一个没有缓存的情景,每个输出位置都需要新的内存读取,其中包括36次双线性插值的读取、27次偏移/聚合权重的读取以及一次写操作,结果是64HWC的MAC。这比理想情况大17倍。

  该分析揭示了计算与存储器访问的比率(范围从0.6到9.7)的巨大差距,突出了存储器访问优化的巨大潜力。值得注意的是,尽管DCNv3使用了依赖于输入的动态偏移,导致了不确定的内存访问,但一个确定的事情是同一组内的通道共享偏移值。这使得我们提出了一个具体的优化策略,以提高DCNv3的速度。

  消除冗余工作量:在之前的CUDA实现中,对于形状为(H,W,C)的输入,偏移量 ( H , W , G , K 2 × 2 ) (H,W,G,K^2×2) (H,W,G,K2×2)和聚合权重 ( H , W , G , K 2 ) (H,W,G,K^2) (H,W,G,K2),我们将总共创建 H × W × C H×W×C H×W×C个线程以最大限度地提高并行性,其中每个线程处理一个通道的一个输出位置。值得注意的是,在每个组内, D = C / G D = C/G D=C/G个通道共享相同的采样偏移和聚合权重值,对于每个输出位置而言。在同一个输出位置上使用多个线程处理这些D个通道是浪费的,因为不同的线程会多次从GPU内存中读取相同的采样偏移和聚合权重值,这对于一个内存绑定的操作符来说是至关重要的。在每个输出位置上使用一个线程处理同一组内的多个通道可以消除这些多余的内存读取请求,大大减少了内存带宽的使用。由于采样位置相同,我们也可以仅计算DCN中使用的双线性插值系数一次。具体来说,如果每个线程处理 D ′ D' D个通道,则读取偏移和聚合权重的内存访问成本,以及计算双线性插值系数的计算成本,都可以减少 D ′ D' D倍。

  消除冗余的内存指令:在实际操作中,仅通过让线程处理多个通道并不会看到速度的提升。原因在于,当D′增加时,我们创建的线程变少,而每个线程的工作量现在增加了D′倍。这实际上减少了CUDA内核的并行程度。幸运的是,DCN内核现在在计算方面变得轻量化,因为双线性插值只需为所有D′通道执行一次,且大部分工作量集中在从不同通道读取输入值的内存指令上。当内存布局是通道最后时,所有D′个通道的值是连续的,我们可以利用矢量化加载:例如,要从内存中读取四个32位浮点值,而不是使用四条指令分别读取四次32位浮点值,我们可以使用单条指令一次加载128位打包的值,从而减少指令数量并缩短每个线程的执行时间。我们可以在将最终结果写入GPU内存时应用类似的技术,最小化内存访问时间并提高内存带宽利用率。此外,现代的半精度数据格式(float16/bfloat16)使需要加载的字节数减半,这意味着在相同内存带宽下,使用半精度格式时内存效率可以提高两倍。然而,在原始的DCNv3实现中,我们并未看到使用半精度数据的速度提升,这可能是由于数据访问和计算带来的过多开销,而在我们新的实现中,速度提升显著。值得注意的是,上述优化技术也可以应用于DCNv1/v2和可变形注意力[48], 因为它们共享类似的性能瓶颈和问题。

2.2 部署可变形卷积

  • Windows快速部署DCNv4(成功版):Windows快速部署DCNv4(成功版)

三、假期计划

  本次假期主要有以下安排:

  • 1.尝试将可变形卷积v4添加到网络中;
  • 2.阅读与Deepwave相关思想的论文;
  • 3.学习吴恩达的机器学习视频;
  • 4.完成数学公式的学习;
  • 5.思考如何修改损失函数;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1833334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【多视图感知】BEVFormer: Learning Bird’s-Eye-View Representation

BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 论文链接:http://arxiv.org/abs/2203.17270 代码链接:https://github.com/fundamentalvision/BEVFormer 一、摘要 本文提出了一种名为BEVFormer的新框架&am…

Marin说PCB之orcad-capture原理图封装库的创建总结----01

今天是个不错的日子,我早上一出门刚骑车到半路就开始下大雨了,可是天气预报上明明说的没有雨啊,所以说天气预报就像是女人的脾气一样,难以揣摩啊,也尽量少去揣摩吧。 小编我刚刚到公司,就收到美国分部同事J…

Nginx + KeepAlived高可用负载均衡集群

目录 一、Keepealived脑裂现象 1.现象 2.原因 3.解决 4.预防 二、实验部署 1.两台nginx做初始化操作并安装nginx 2.四层反向代理配置 3.配置高可用 4.准备检查nginx运行状态脚本 5.开启keepalived服务并测试 一、Keepealived脑裂现象 1.现象 主服务器和备服务器都同…

喜讯 | 全视通获得珠海市第七届“市长杯”工业设计大赛三等奖

近日,在珠海市举行的第七届“市长杯”工业设计大赛颁奖典礼上,珠海全视通信息技术有限公司(以下简称“全视通”)凭借创新的“医护对讲一体终端机”产品,历经激烈的竞争和严格的评选流程,包括大赛宣传发动、…

移植案例与原理 - startup子系统之syspara_lite系统属性部件 (2)

系统属性部件syspara_lite负责提供获取与设置操作系统相关的系统属性,包括默认系统属性、OEM厂商系统属性和自定义系统属性。为满足OpenHarmony产品兼容性规范,产品解决方案需要实现获取设备信息的接口,如:产品名、品牌名、厂家名…

手持气象仪:科技与自然交汇的奇妙工具

TH-SQ5在广袤无垠的大自然中,天气总是瞬息万变,让人难以捉摸。然而,随着科技的进步,人类已经能够借助各种先进的仪器来预测和监测天气变化,其中,手持气象仪便是其中的佼佼者。 手持气象仪,顾名…

聚焦 Navicat 17 新特性 | 查询与配置的革新之处

随着 Navicat 17 的发布,引起业界热烈讨论与关注,这也标志着 Navicat 的产品力再次飞跃。新版本引入的众多创新特性极大地提升了用户在数据库管理和数据分析方面的体验,涵盖模型设计与同步、数据字典、数据分析(data profiling&am…

安卓手机删除文件怎么找回?2个方法,一键救援错过的数据

我们通过手机拍照、录音、录像、浏览网页、社交互动等方式记录和分享生活中的每一个瞬间。然而,手机中的数据也是我们最容易误删的。 当我们不小心删除了重要的文件或数据时,将给生活和工作带来不小的困扰。那么,删除文件怎么找回呢&#xf…

人脸识别系统---年龄预测

一、预测年龄 1.加载预训练的人脸检测模型 face_cascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml)2.加载预训练的性别和年龄识别模型 gender_net cv2.dnn.readNetFromCaffe(deploy_gender.prototxt, gender_net.caffemodel) age_net cv2.dnn.readNet…

英语恶补ing

ing的词组都有停下来做某事的感觉了。 second hand是形容词了。 wouldnt buy这里的would是情态动词,也是助动词 助动词不能单独使用,要搭配实义动词,这样才能构成谓语 情态动词(modals)在英语中有多种作用&#xff…

Linux系统编程——网络编程

目录 一、对于Socket、TCP/UDP、端口号的认知: 1.1 什么是Socket: 1.2 TCP/UDP对比: 1.3 端口号的作用: 二、字节序 2.1 字节序相关概念: 2.2 为什么会有字节序: 2.3 主机字节序转换成网络字节序函数…

springboot + Vue前后端项目(第十七记)

项目实战第十七记 写在前面1. 个人信息1.1 Person.vue1.2 设置路由并改动Header.vue1.3 动态刷新头像1.3.1 在保存个人信息时,触发方法1.3.2 父组件Manage.vue1.3.3 再将user以prop方式传递给子组件Header.vue1.3.4 Header.vue使用user 1.4 效果图 2. 修改密码2.1 前…

《跟我一起学“网络安全”》——等保风评加固应急响应

等保风评加固应急响应 一、安全加固 背景 随着IP技术的飞速发展,一个组织的信息系统经常会面临内部和外部威胁的风险,网络安全已经成为影响信息系统的关键问题。 虽然传统的防火墙等各类安全产品能提供外围的安全防护,但并不能真正彻底的消…

每日复盘-202406017

今日关注: 20240617 六日涨幅最大: ------1--------301036--------- 双乐股份 五日涨幅最大: ------1--------301176--------- 逸豪新材 四日涨幅最大: ------1--------300868--------- 杰美特 三日涨幅最大: ------1--------301082--------- 久盛电气 二日涨幅最大…

day02论文学习:能够使大语言模型产生带有引用的文章

1.主题:Enabling Large Language Models to Generate Text with Citations(能够使大语言模型产生带有引用的文章) 引用出处: Gao, T., Yen, H., Yu, J., & Chen, D. (2023). Enabling Large Language Models to Generate Tex…

C#特性-CallerMemberName、CallerFilePath和CallerLineNumber的介绍和应用

介绍 在csharp中,CallerMemberName, CallerFilePath, 和 CallerLineNumber 是编译时常量,它们是csharp 5.0引入的特性,用于提供有关调用堆栈的信息,通常用于日志记录和调试。这些特性可以自动填充方法的参数,无需显式…

你必须知道的Linux基础知识(一)

Linux简介 类 Unix 系统 Linux 是一种自由、开放源码的类似 Unix 的操作系统 Linux 本质是指 Linux 内核 Linux 这个词本身只表示 Linux 内核,单独的 Linux 内核并不能成为一个可以正常工作的操作系统,所以Linux 出现了各种发行版。 Linux 之父 (林纳斯本纳第…

【系统架构设计师】一、计算机系统基础知识(指令系统|存储系统|输入输出技术|总线结构)

目录 一、指令系统 1.1 计算机指令 1.2 指令寻址方式 1.3 CISC 与 RISC 1.4 指令流水线 二、存储系统 2.1 分级存储体系 2.2 地址映射 2.3 替换算法 2.4 磁盘 2.4.1 磁盘结构和参数 2.4.2 磁盘调度算法 三、输入输出技术 四、总线结构 五、考试真题练习 一、指令…

-------------------------面试散文-----------------------------------

问题1:vue中动态引入图片,为什么使用require? 回答:因为动态添加的src 编译过后的文件地址和被编译过后的资源文件地址不一致,从而导致无法访问题 而使用require 返回的就是资源文件被编译后的文件地址,从…