4月22日復盤-開始卷積神經網絡

4月24日復盤

一、CNN

視覺處理三大任務:圖像分類、目標檢測、圖像分割

上游:提取特征,CNN

下游分類目標、分割等,具體的業務

1. 概述

? 卷積神經網絡是深度學習在計算機視覺領域的突破性成果。在計算機視覺領域, 往往我們輸入的圖像都很大,使用全連接網絡的話,計算的代價較高。另外圖像也很難保留原有的特征,導致圖像處理的準確率不高。

? 卷積神經網絡(Convolutional Neural Network,CNN)是一種專門用于處理具有網格狀結構數據的深度學習模型。最初,CNN主要應用于計算機視覺任務,但它的成功啟發了在其他領域應用,如自然語言處理等。

? 卷積神經網絡(Convolutional Neural Network)是含有卷積層的神經網絡. 卷積層的作用就是用來自動學習、提取圖像的特征。

? CNN網絡主要有三部分構成:卷積層、池化層和全連接層構成,其中卷積層負責提取圖像中的局部特征;池化層用來大幅降低運算量并特征增強;全連接層類似神經網絡的部分,用來輸出想要的結果。

1.1 使用場景

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

1.2 與傳統網絡的區別

在這里插入圖片描述

1.3 全連接的局限性

全連接神經網絡并不太適合處理圖像數據…

1.3.1 參數量巨大

y = x × W T + b y = x \times W^T + b y=x×WT+b

全連接結構計算量非常大,假設我們有1000×1000的輸入,如果隱藏層也是1000×1000大小的神經元,由于神經元和圖像每一個像素連接,則參數量會達到驚人的1000×1000×1000×1000,僅僅一層網絡就已經有 1 0 12 10^{12} 1012個參數。

1.3.2 表達能力太有限

全連接神經網絡的角色只是一個分類器,如果將整個圖片直接輸入網絡,不僅參數量大,也沒有利用好圖片中像素的空間特性,增加了學習難度,降低了學習效果。

1.4 卷積思想

卷:從左往右,從上往下

積:乘積,求和

1.4.1 概念

? Convolution,輸入信息與卷積核(濾波器,Filter)的乘積。

1.4.2 局部連接
  • 局部連接可以更好地利用圖像中的結構信息,空間距離越相近的像素其相互影響越大。
  • 根據局部特征完成目標的可辨識性。
1.4.3 權重共享
  • 圖像從一個局部區域學習到的信息應用到其他區域。

  • 減少參數,降低學習難度。

2. 卷積層

在這里插入圖片描述

接下來,我們開始學習卷積核的計算過程, 即: 卷積核是如何提取特征的。

2.1 卷積核

? 卷積核是卷積運算過程中必不可少的一個“工具”,在卷積神經網絡中,卷積核是非常重要的,它們被用來提取圖像中的特征。

卷積核其實是一個小矩陣,在定義時需要考慮以下幾方面的內容:

  • 卷積核的個數:卷積核(過濾器)的個數決定了其輸出特征矩陣的通道數
  • 卷積核的值:卷積核的值是初始化好的,后續進行更新。
  • 卷積核的大小:常見的卷積核有1×1、3×3、5×5等,一般都是奇數 × 奇數。

下圖就是一個3×3的卷積核:
在這里插入圖片描述

2.2 卷積計算
2.2.1 卷積計算過程

? 卷積的過程是將卷積核在圖像上進行滑動計算,每次滑動到一個新的位置時,卷積核和圖像進行點對點的計算,并將其求和得到一個新的值,然后將這個新的值加入到特征圖中,最終得到一個新的特征圖。

在這里插入圖片描述

  1. input 表示輸入的圖像
  2. filter 表示卷積核, 也叫做濾波器
  3. input 經過 filter 的得到輸出為最右側的圖像,該圖叫做特征圖

? 那么, 它是如何進行計算的呢?卷積運算本質上就是在濾波器和輸入數據的局部區域間做點積。

在這里插入圖片描述

左上角的點計算方法:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

按照上面的計算方法可以得到最終的特征圖為:

在這里插入圖片描述

? 卷積的重要性在于它可以將圖像中的特征與卷積核進行卷積操作,從而提取出圖像中的特征

? 可以通過不斷調整卷積核的大小、卷積核的值和卷積操作的步長,可以提取出不同尺度和位置的特征。

# 面向對象的模塊化編程
from matplotlib import pyplot as plt
import os
import torch
import torch.nn as nndef test001():current_path = os.path.dirname(__file__)img_path = os.path.join(current_path, "data", "彩色.png")# 轉換為相對路徑img_path = os.path.relpath(img_path)# 使用plt讀取圖片img = plt.imread(img_path)print(img.shape)# 轉換為張量:HWC  ---> CHW  ---> NCHW  鏈式調用img = torch.tensor(img).permute(2, 0, 1).unsqueeze(0)# 創建卷積核  (501, 500, 4)conv = nn.Conv2d(in_channels=4,  # 輸入通道out_channels=32,  # 輸出通道kernel_size=(5, 3),  # 卷積核大小stride=1,  # 步長padding=0,  # 填充bias=True)# 使用卷積核對圖像進行卷積操作  [9999]  [[[[]]]]out = conv(img)# 輸出128個特征圖conv2 = nn.Conv2d(in_channels=32,  # 輸入通道out_channels=128,  # 輸出通道kernel_size=(5, 5),  # 卷積核大小stride=1,  # 步長padding=0,  # 填充bias=True)out = conv2(out)print(out)# 把圖像顯示出來print(out.shape)plt.imshow(out[0][10].detach().numpy(), cmap='gray')plt.show()# 作為主模塊執行
if __name__ == "__main__":test001()
2.2.2 卷積計算底層實現

并不是水平和垂直方向的循環。

下圖是卷積的基本運算方式:

卷積真正的計算過程如下圖:

2.3 邊緣填充

? Padding

? 通過上面的卷積計算,我們發現最終的特征圖比原始圖像要小,如果想要保持圖像大小不變, 可在原圖周圍添加padding來實現。

? 更重要的,邊緣填充還更好的保護了圖像邊緣數據的特征。

在這里插入圖片描述

2.4 步長Stride

按照步長為1來移動卷積核,計算特征圖如下所示:

在這里插入圖片描述

如果我們把 Stride 增大為2,也是可以提取特征圖的,如下圖所示:

在這里插入圖片描述

stride太小:重復計算較多,計算量大,訓練效率降低;
stride太大:會造成信息遺漏,無法有效提煉數據背后的特征;

2.5 多通道卷積計算

首先我們需要認識下通道,做到顆粒度對齊~

2.5.1 數字圖像的標識

我們知道圖像在計算機眼中是一個矩陣

在這里插入圖片描述

通道越多,可以表達的特征就越豐富~

2.5.2 具體計算實現

實際中的圖像都是多個通道組成的,我們怎么計算卷積呢?

在這里插入圖片描述

計算方法如下:

  1. 當輸入有多個通道(Channel), 例如RGB三通道, 此時要求卷積核需要有相同的通道數。
  2. 卷積核通道與對應的輸入圖像通道進行卷積。
  3. 將每個通道的卷積結果按位相加得到最終的特征圖。

如下圖所示:

在這里插入圖片描述

2.6 多卷積核卷積計算

? 實際對圖像進行特征提取時, 我們需要使用多個卷積核進行特征提取。這個多個卷積核可以理解為從不同到的視角、不同的角度對圖像特征進行提取。

? 那么, 當使用多個卷積核時, 應該怎么進行特征提取呢?

在這里插入圖片描述

2.7 特征圖大小

輸出特征圖的大小與以下參數息息相關:

  1. size: 卷積核/過濾器大小,一般會選擇為奇數,比如有 1×1, 3×3, 5×5
  2. Padding: 零填充的方式
  3. Stride: 步長

那計算方法如下圖所示:
在這里插入圖片描述

  1. 輸入圖像大小: W x W

  2. 卷積核大小: F x F

  3. Stride: S

  4. Padding: P

  5. 輸出圖像大小: N x N

以下圖為例:

  1. 圖像大小: 5 x 5
  2. 卷積核大小: 3 x 3
  3. Stride: 1
  4. Padding: 1
  5. (5 - 3 + 2) / 1 + 1 = 5, 即得到的特征圖大小為: 5 x 5

在這里插入圖片描述

2.8 只卷一次?

在這里插入圖片描述

2.9 卷積參數共享

? 數據是 32 × 32 × 3 32×32×3 32×32×3 的圖像,用 10 10 10 5 × 5 5×5 5×5 的filter來進行卷積操作,所需的權重參數有多少個呢?

  • 5 × 5 × 3 = 75 5×5×3 = 75 5×5×3=75,表示每個卷積核只需要 75 75 75個參數。
  • 10個不同的卷積核,就需要 10 ? 75 = 750 10*75 = 750 10?75=750個卷積核參數。
  • 如果還考慮偏置參數 b b b,最終需要 750 + 10 = 760 750+10=760 750+10=760 個參數。

全連接參數量: 10 ? 28 ? 28 ? ( 32 ? 32 ? 3 + 1 ) 全連接參數量: 10 * 28 * 28 *(32 * 32 * 3 + 1) 全連接參數量:10?28?28?(32?32?3+1)

2.10 局部特征提取

? 通過卷積操作,CNN具有局部感知性,能夠捕捉輸入數據的局部特征,這在處理圖像等具有空間結構的數據時非常有用。

2.11 PyTorch卷積層 API

在這里插入圖片描述

test01 函數使用一個多通道卷積核進行特征提取, test02 函數使用 3 個多通道卷積核進行特征提取:

import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import osdef showimg(img):plt.imshow(img)# 隱藏刻度plt.axis("off")plt.show()def test001():dir = os.path.dirname(__file__)img = plt.imread(os.path.join(dir, "彩色.png"))# 創建卷積核# in_channels:輸入數據的通道數# out_channels:輸出特征圖數,和filter數一直conv = nn.Conv2d(in_channels=4, out_channels=1, kernel_size=3, stride=1, padding=1)# 注意:卷積層對輸入的數據有形狀要求 [batch, channel, height, width]# 需要進行形狀轉換  H, W, C -> C, H, Wimg = torch.tensor(img, dtype=torch.float).permute(2, 0, 1)print(img.shape)# 接著變形:CHW -> BCHWnewimg = img.unsqueeze(0)print(newimg.shape)# 送入卷積核運算一下newimg = conv(newimg)print(newimg.shape)# 蔣NCHW->HWCnewimg = newimg.squeeze(0).permute(1, 2, 0)showimg(newimg.detach().numpy())# 多卷積核
def test002():dir = os.path.dirname(__file__)img = plt.imread(os.path.join(dir, "彩色.png"))# 定義一個多特征圖輸出的卷積核conv = nn.Conv2d(in_channels=4, out_channels=3, kernel_size=3, stride=1, padding=1)# 圖形要進行變形處理img = torch.tensor(img).permute(2, 0, 1).unsqueeze(0)# 使用卷積核對圖片進行卷積計算outimg = conv(img)print(outimg.shape)# 把圖形形狀轉換回來以方便顯示outimg = outimg.squeeze(0).permute(1, 2, 0)print(outimg.shape)# showimg(outimg)# 顯示這些特征圖for idx in range(outimg.shape[2]):showimg(outimg[:, :, idx].squeeze(-1).detach())if __name__ == "__main__":test002()

效果:

在這里插入圖片描述

知識拓展(AI生成)

1. 什么是多通道卷積?在處理RGB圖像時,如何體現多通道卷積的特性?

多通道卷積是指在卷積神經網絡中,針對輸入數據的多個通道(如RGB圖像的紅、綠、藍三個通道)分別進行卷積操作,并將結果通過加權求和的方式整合為一個輸出特征圖的過程。其特性在處理RGB圖像時主要體現在以下方面:

  • 卷積核的深度與輸入圖像的通道數一致(如3通道的RGB圖像對應3深度的卷積核),每個卷積核能夠提取輸入圖像各通道的組合特征。
  • 通過多個卷積核的組合使用,能夠捕捉圖像在不同通道上的復雜特征關聯,從而提升模型對圖像內容的理解能力。

2. 假設你有一個3通道(如RGB)的輸入圖像,其尺寸為64x64,應用一個大小為3x3、深度也為3的卷積核進行卷積操作,請描述這個過程。

對于一個尺寸為64x64的3通道(RGB)輸入圖像,應用一個大小為3x3、深度為3的卷積核時,卷積操作的過程如下:

  1. 卷積核在輸入圖像的每個通道上進行滑動,每個位置計算卷積核與圖像局部區域的逐元素乘積之和。
  2. 將三個通道的計算結果相加,得到一個標量值,作為輸出特征圖對應位置的值。
  3. 重復上述操作,覆蓋整個輸入圖像,最終生成一個深度為1的特征圖(若使用多個卷積核,則輸出特征圖的深度等于卷積核的數量)。

3. 請計算一個大小為5x5、深度為3的卷積核應用于具有10個通道的輸入時,需要多少個可學習參數。如果有偏置項,總參數量是多少?

一個5x5大小、深度為3的卷積核應用于具有10個通道的輸入時,可學習參數的數量計算如下:

  • 權重參數:卷積核的每個深度(3)與輸入通道數(10)對應,因此權重參數總數為5×5×10×3=750個。
  • 偏置參數:若包含偏置項,則每個卷積核對應一個偏置,因此總參數量為750+3=753個。

4. 解釋卷積層中的偏置項是什么,并討論在神經網絡中引入偏置項的好處。

卷積層中的偏置項是一個與卷積核對應的可學習參數,加在卷積操作后的結果上。引入偏置項的好處包括:

  • 提供模型的靈活性:偏置項允許模型在激活函數前調整輸出的基準值,使其能夠更好地擬合數據。
  • 增強表達能力:偏置項為網絡提供了額外的自由度,有助于提高模型對復雜模式的表達能力。

5. 在實際應用中,為什么有些卷積層會選擇不包含偏置項?列舉并解釋可能的情況。

在實際應用中,有些卷積層選擇不包含偏置項的可能情況包括:

  • 當卷積層后面緊跟著批量歸一化(Batch Normalization)層時,偏置項的作用會被歸一化過程吸收,因此可以省略偏置以減少參數量。
  • 在某些輕量級模型設計中,為了降低計算復雜度和參數量,可能會省略偏置項,特別是在輸入數據已經過適當歸一化的情況下。

6. 在多通道卷積過程中,權重共享如何在不同通道間實現特征學習的協同作用?請結合實際應用案例進行說明。

多通道卷積過程中,權重共享通過以下方式在不同通道間實現特征學習的協同作用:

  • 卷積核的權重在所有輸入通道上共享,使得模型能夠學習跨通道的共性特征。
  • 在目標檢測任務中,不同通道的特征(如邊緣、紋理)通過共享權重的卷積核進行整合,形成對目標形狀的有效表示。

7. 當處理高維輸入數據時(例如視頻幀序列或高光譜圖像),針對多個通道上的卷積操作,你可能會采取哪些優化策略以減少計算復雜度并提高模型性能?

針對高維輸入數據(如視頻幀序列或高光譜圖像),可采取以下優化策略:

  • 使用深度可分離卷積:將標準卷積分解為逐深度卷積和逐點卷積,顯著減少計算量。
  • 應用分組卷積:將輸入通道分組,每組獨立進行卷積操作,降低計算復雜度。
  • 采用稀疏連接:設計稀疏連接模式,減少卷積核與輸入通道的全連接關系。

8. 請推導一個多通道卷積層(包括多個濾波器和每個濾波器對應的偏置項)前向傳播過程中的矩陣運算表達式,并解釋反向傳播時這些參數(權重和偏置)的梯度是如何計算的。

前向傳播過程的矩陣運算表達式為:
[ Y_{ijk} = b_k + \sum_{m=1}^{M} \sum_{p=1}^{P} \sum_{q=1}^{Q} X_{i+p-1,j+q-1,m} \cdot W_{pqmk} ]

其中,( X ) 是輸入,( W ) 是權重,( b ) 是偏置,( Y ) 是輸出。

反向傳播中權重和偏置的梯度計算基于鏈式法則:

  • 權重梯度:通過輸入數據和輸出梯度的卷積計算。
  • 偏置梯度:等于輸出梯度在對應特征圖上的總和。

9. 現代深度學習框架中存在將通道注意力機制融入到卷積層的設計,例如SENet中的Squeeze-and-Excitation模塊。請描述這一機制如何影響卷積層對多通道信息的處理,并討論其優勢。

SENet中的Squeeze-and-Excitation模塊通過以下方式影響卷積層對多通道信息的處理:

  • Squeeze操作:對每個通道進行全局平均池化,獲取通道級統計特征。
  • Excitation操作:通過全連接層學習通道間的依賴關系,生成通道權重。
    其優勢在于能夠動態調整通道權重,增強重要特征通道的表達,抑制不重要通道,從而提升模型對關鍵信息的關注能力。

10. 舉例說明一種或多通道特征融合的方法,比如深度可分離卷積中的點wise卷積或者跨通道卷積,并闡述它們如何促進不同通道間的特征交互。

深度可分離卷積中的點wise卷積是一種多通道特征融合方法:

  • 點wise卷積使用1x1卷積核,將輸入的多個通道特征進行線性組合,生成新的通道特征。
  • 該方法通過跨通道的線性變換,促進不同通道間特征的交互與融合,同時保持計算效率。

11. 假設你在訓練一個用于圖像分類的深度卷積神經網絡時,發現由于輸入圖像的多通道特性導致模型過擬合,請提出至少兩種通過調整卷積層結構或配置來緩解過擬合的技術方案,并討論其原理。

針對多通道特性導致的過擬合,可采用以下技術方案:

  1. 增加Dropout層:在卷積層后添加Dropout層,隨機丟棄部分神經元輸出,防止模型對訓練數據的過度擬合。
  2. 應用Batch Normalization:通過歸一化每層的輸入,穩定訓練過程,降低過擬合風險,同時減少對偏置項的依賴。

12. 討論卷積層中偏置項的作用以及它可能引入的問題(如模型的平移不變性)。在某些場景下為何會選擇去除偏置項?如果有,會采用什么替代策略來補償去除偏置帶來的潛在損失?

偏置項在卷積層中的作用包括提供模型靈活性和增強表達能力。然而,它可能引入的問題包括:

  • 破壞平移不變性:偏置項的加入可能使模型對輸入的平移變換敏感。
    在某些場景下(如使用Batch Normalization后),去除偏置項的原因在于其作用可被歸一化層吸收,從而簡化模型結構并減少參數量。

13. 比較全局平均池化、全局最大池化以及具有偏置項的1x1卷積在獲取通道級統計特征方面的異同,并根據特定任務需求闡述何時選擇哪種方法更為合適。

  • 全局平均池化:對每個通道進行全局平均,提取通道的平均響應特征,適用于需要平滑統計的任務(如圖像分類)。
  • 全局最大池化:提取通道的最大響應,強調顯著特征,適用于需要突出關鍵信息的任務(如目標檢測)。
  • 1x1卷積:通過線性組合通道特征,生成新的通道級表示,適用于特征融合與通道間關系建模任務。

在特定任務中,若需要對通道特征進行非線性組合和降維,1x1卷積可能更為合適;若僅需提取簡單統計特征,則全局池化方法更為高效。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80699.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80699.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80699.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【網絡原理】從零開始深入理解TCP的各項特性和機制.(三)

上篇介紹了網絡原理傳輸層TCP協議的知識,本篇博客給大家帶來的是網絡原理剩余的內容, 總體來說,這部分內容沒有上兩篇文章那么重要,本篇知識有一個印象即可. 🐎文章專欄: JavaEE初階 🚀若有問題 評論區見 ? 歡迎大家點贊 評論 收藏 分享 如果你不知道分…

解決qnn htp 后端不支持boolean 數據類型的方法。

一、背景 1.1 問題原因 Qnn 模型在使用fp16的模型轉換不支持類型是boolean的cast 算子,因為 htp 后端支持量化數據類型或者fp16,不支持boolean 類型。 ${QNN_SDK_ROOT_27}/bin/x86_64-linux-clang/qnn-model-lib-generator -c ./bge_small_fp16.cpp -b …

使用Three.js搭建自己的3Dweb模型(從0到1無廢話版本)

教學視頻參考:B站——Three.js教學 教學鏈接:Three.js中文網 老陳打碼 | 麒躍科技 一.什么是Three.js? Three.js? 是一個基于 JavaScript 的 ?3D 圖形庫,用于在網頁瀏覽器中創建和渲染交互式 3D 內容。它基于 WebGL&#xff0…

PostgreSQL WAL 冪等性詳解

1. WAL簡介 WAL(Write-Ahead Logging)是PostgreSQL的核心機制之一。其基本理念是:在修改數據庫數據頁之前,必須先將這次修改操作寫入到WAL日志中。 這確保了即使發生崩潰,數據庫也可以根據WAL日志進行恢復。 恢復的核…

git提交規范記錄,常見的提交類型及模板、示例

Git提交規范是一種約定俗成的提交信息編寫標準,旨在使代碼倉庫的提交歷史更加清晰、可讀和有組織。以下是常見的Git提交類型及其對應的提交模板: 提交信息的基本結構 一個標準的Git提交信息通常包含以下三個主要部分: Header?:描…

FastAPI系列06:FastAPI響應(Response)

FastAPI響應(Response) 1、Response入門2、Response基本操作設置響應體(返回數據)設置狀態碼設置響應頭設置 Cookies 3、響應模型 response_model4、響應類型 response_classResponse派生類自定義response_class 在“FastAPI系列0…

每日一題(小白)模擬娛樂篇33

首先,理解題意是十分重要的,我們是要求最短路徑,這道題可以用dfs,但是題目給出的數據是有規律的,我們可以嘗試模擬的過程使用簡單的方法做出來。每隔w數字就會向下轉向,就比如題目上示例的w6,無…

哈希封裝unordered_map和unordered_set的模擬實現

文章目錄 (一)認識unordered_map和unordered_set(二)模擬實現unordered_map和unordered_set2.1 實現出復用哈希表的框架2.2 迭代器iterator的實現思路分析2.3 unordered_map支持[] (三)結束語 (…

Java學習-Java基礎

1.重寫與重載的區別 重寫發生在父子類之間,重載發生在同類之間構造方法不能重寫,只能重載重寫的方法返回值,參數列表,方法名必須相同重載的方法名相同,參數列表必須不同重寫的方法的訪問權限不能比父類方法的訪問權限更低 2.接口和抽象類的區別 接口是interface,抽象類是abs…

BG開發者日志0427:故事的起點

1、4月26日晚上,BG項目的gameplay部分開發完畢,后續是細節以及試玩版優化。 開發重心轉移到story部分,目前剛開始, 確切地說以前是長期擱置狀態,因為過去的四個月中gameplay部分優先開發。 --- 2、BG這個項目的起點…

頭歌實訓之游標觸發器

🌟 各位看官好,我是maomi_9526! 🌍 種一棵樹最好是十年前,其次是現在! 🚀 今天來學習C語言的相關知識。 👍 如果覺得這篇文章有幫助,歡迎您一鍵三連,分享給更…

【深度學習】多頭注意力機制的實現|pytorch

博主簡介:努力學習的22級計算機科學與技術本科生一枚🌸博主主頁: Yaoyao2024往期回顧:【深度學習】注意力機制| 基于“上下文”進行編碼,用更聰明的矩陣乘法替代笨重的全連接每日一言🌼: 路漫漫其修遠兮,吾…

java16

1.API續集 可以導入別人寫好的clone的jar包 注意:方法要有調用者,如果調用者是null就會報錯 2.如何導入別人寫好的jar包 復制jar包然后粘貼在lib里面,然后右鍵點擊jar包再點擊下面的add 3.關于打印java中的引用數據類型

PostgreSQL的擴展 credcheck

PostgreSQL的擴展 credcheck credcheck 是 PostgreSQL 的一個安全擴展,專門用于強制實施密碼策略和憑證檢查,特別適合需要符合安全合規要求的數據庫環境。 一、擴展概述 1. 主要功能 強制密碼復雜度要求防止使用常見弱密碼密碼過期策略實施密碼重復使…

MyBatis中的@Param注解-如何傳入多個不同類型的參數

mybatis中參數識別規則 默認情況下,MyBatis 會按照參數位置自動分配名稱:param1, param2, param3, ...或者 arg0, arg1。 // Mapper 接口方法 User getUserByIdAndName(Integer id, String name); 以上接口在XML中只能通過param1或者arg0這樣的方式來引用,可讀性差。 &l…

DIFY教程第一集:安裝Dify配置環境

一、Dify的介紹 https://dify.ai/ Dify 是一款創新的智能生活助手應用,旨在為您提供便捷、高效的服務。通過人工智能技術, Dify 可以實現語音 助手、智能家居控制、日程管理等功能,助您輕松應對生活瑣事,享受智慧生活。簡約的…

5、Rag基礎:RAG 專題

RAG 簡介 什么是檢索增強生成? 檢索增強生成(RAG)是指對大型語言模型輸出進行優化,使其能夠在生成響應之前引用訓練數據來源之外的權威知識庫。大型語言模型(LLM)用海量數據進行訓練,使用數十億個參數為回答問題、翻譯語言和完成句子等任務生成原始輸出。在 LLM 本就強…

GAMES202-高質量實時渲染(homework1)

目錄 Homework1shadow MapPCF(Percentage Closer Filter)PCSS(Percentage Closer Soft Shadow) GitHub主頁:https://github.com/sdpyy1 作業實現:https://github.com/sdpyy1/CppLearn/tree/main/games202 Homework1 shadow Map 首先需要完成MVP矩陣的構造&#xf…

JDK(Ubuntu 18.04.6 LTS)安裝筆記

一、前言 本文與【MySQL 8(Ubuntu 18.04.6 LTS)安裝筆記】同批次:先搭建數據庫,再安裝JDK,后面肯定就是部署Web應用:典型的單機部署。“麻雀雖小五臟俱全”,善始善終,還是記下來吧。…

軟件測試之接口測試常見面試題

一、什么是(軟件)接口測試? 接口測試:是測試系統組件間接口的一種測試方法 接口測試的重點:檢查數據的交換,數據傳遞的正確性,以及接口間的邏輯依賴關系 接口測試的意義:在較早期開展,在軟件開發的同時…