聯邦學習聚合參數操作詳解

聯邦學習中常見的模型聚合操作,具體用于對來自多個客戶端的模型更新進行聚合,以得到全局模型。在聯邦學習框架下,多個客戶端在本地訓練各自的模型后,會將模型更新(通常是模型的權重)發送到中央服務器,中央服務器需要對這些本地更新進行合并,生成一個新的全局模型。

1.?初始化方法?__init__

  • 該方法接受一個參數?n_classes,通常表示分類任務中的類別數目。初始化時將其存儲為類的一個成員變量,供后續使用。該參數的具體用途在代碼中未直接體現,但通常它與分類任務中的類別數量有關,可能用于處理某些特定的聚合操作(例如在處理分類層時可能涉及不同類別的權重更新)。

2.?agg_my?方法

這個方法的作用是進行模型的聚合,即將多個客戶端的本地模型更新合并成一個全局模型。其輸入參數有:

  • w_local_models:包含所有客戶端本地模型更新的字典。
  • global_model:當前全局模型的權重。
  • width_list:該列表的作用是為每個客戶端指定一個權重,用于在聚合時加權不同客戶端的更新。

聚合過程的核心步驟如下:

3.?遍歷全局模型的各個參數

在聯邦學習中,模型通常由多個層組成,每一層都有若干個參數(例如卷積層的權重或全連接層的權重)。keys = list(w_cur.keys()) 提取全局模型 w_cur 的所有層的名稱(即參數的鍵)。接下來,通過遍歷這些鍵來處理每一層的聚合。

4.?初始化聚合結果的臨時變量

對于每一層的權重,首先初始化兩個張量 tmpcount,它們的形狀與當前全局模型中的權重相同。tmp 用于存儲該層的加權聚合結果,而 count 用于記錄每個客戶端對該層權重的貢獻次數。

5.?遍歷本地模型的更新

接下來,對每個客戶端(w_local_models)進行遍歷,并進行以下操作:

  • 獲取客戶端的權重寬度width = width_list[int(cur_clnt)]?表示為每個客戶端指定一個寬度,這可能與數據量或客戶端的權重有關。這個寬度將在后續的聚合過程中作為加權因素。
  • 根據權重形狀選擇聚合策略:模型的不同層可能具有不同的形狀(如卷積層的權重是四維的,線性層是二維的等),因此在聚合時會根據權重的形狀選擇不同的聚合方法:
    • 對于形狀為四維的權重(通常是卷積層的權重),調用?agg_my_func_4?進行聚合。
    • 對于形狀為二維的權重(通常是全連接層的權重),調用?agg_my_func_2?進行聚合。
    • 對于形狀為一維的權重,調用?agg_my_func_1?進行聚合。
    • 對于其他類型的權重,則直接使用本地客戶端的權重值。

6.?加權聚合

對于每個客戶端的權重更新,聚合時會使用該客戶端的“寬度”(width)來加權。如果某個客戶端的權重中沒有該層的參數(如某些特定的層在某些客戶端上沒有被更新),則會用零填充以避免影響聚合結果。

7.?處理客戶端數據缺失

  • 對于某些權重,在某些客戶端中可能沒有相應的更新(例如某個客戶端在某些層上的訓練不充分或者沒有更新該層的參數)。此時,該層的權重更新將用零填充。
  • count[count == 0] = 1?這一行的目的是防止在某些客戶端沒有貢獻時,出現除以零的情況。在聚合過程中,如果某個權重的更新次數為零,則將其計數置為1,避免在后續計算時出現除零錯誤。

8.?最終權重更新

每一層的權重更新結果是通過累積所有客戶端的更新結果(即 tmp)并將其除以對應的計數(count)來實現的。這實際上是對每一層權重的加權平均,即全局模型的權重是由所有客戶端的加權貢獻形成的。

9.?返回新的全局模型

最終,w_cur[k] = w_cur[k] / count 對全局模型的每一層進行更新,得到加權平均后的結果,最終返回更新后的全局模型。

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

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

相關文章

藍牙 BLE 掃描面試題大全(2):進階面試題與實戰演練

前文覆蓋了 BLE 掃描的基礎概念與經典問題藍牙 BLE 掃描面試題大全(1):從基礎到實戰的深度解析-CSDN博客,但實際面試中,企業更關注候選人對復雜場景的應對能力(如多設備并發掃描、低功耗與高發現率的平衡)和前沿技術的…

基于Flask實現的醫療保險欺詐識別監測模型

基于Flask實現的醫療保險欺詐識別監測模型 項目截圖 項目簡介 社會醫療保險是國家通過立法形式強制實施,由雇主和個人按一定比例繳納保險費,建立社會醫療保險基金,支付雇員醫療費用的一種醫療保險制度, 它是促進社會文明和進步的…

機房斷電后 etcd 啟動失敗的排查與快速恢復實錄

目錄 機房斷電后 etcd 啟動失敗的排查與快速恢復實錄 背景與問題起因 報錯分析 解決方案:刪除 member 數據重新初始化 步驟 1:停止 etcd 容器或服務 步驟 2:刪除 member 目錄 步驟 3:重啟 etcd 服務 附加提醒 總結與后續…

Linux上并行打包壓縮工具

文章目錄 Linux上并行打包壓縮工具1. **Pigz (Parallel gzip)**2. **Pbzip2 (Parallel bzip2)**3. **Pixz (Parallel xz)**4. **Zstd (支持多線程)**5. **GNU Parallel 傳統工具**6. **Fastest Tools (綜合建議)**注意事項: tar和zstd多線程壓縮和解壓**1. 多線程壓…

【K8S系列】K8S中Service 無法訪問問題的深度分析

摘要 : 本文是關于 Kubernetes 中 Service 無法訪問問題的深度分析,結合根本原因、診斷策略與解決方案的系統性指南: Kubernetes Service 訪問故障全景解析:從底層機制到實戰修復 Service 作為 Kubernetes 集群內網絡通信的核心抽…

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解題思路2. 代碼實現 題目鏈接:3577. Count the Number of Computer Unlocking Permutations 1. 解題思路 這一題其實就是一個腦筋急轉彎,要想要能夠將所有的電腦解鎖&#x…

進行性核上性麻痹護理指南:全維度守護健康

進行性核上性麻痹是一種罕見的神經系統退行性疾病,會導致患者出現運動障礙、吞咽困難、認知障礙等癥狀。科學的健康護理對延緩病情發展、提升患者生活質量至關重要。 飲食護理:由于患者常存在吞咽困難,食物應選擇糊狀、軟爛的類型&#xff0c…

【淺析賽題,國賽一等獎水平:思路+模型:】2025 年第八屆河北省研究生數學建模競賽:A 題 基于圖論的復雜網絡分析與可視化建模

問題一:社交網絡拓撲結構分析與影響力評估 基礎模型 有向加權圖構建:將用戶設為節點,互動關系為有向邊,以互動頻率(如一定時間內點贊、評論、轉發次數)或加權求和(賦予不同互動類型不同權重&a…

web3-去中心化金融深度剖析:DEX、AMM及兌換交易傳播如何改變世界

web3-去中心化金融深度剖析:DEX、AMM及兌換交易傳播如何改變世界 金融問題 1.個人投資:在不同的時間和可能的情況(狀態)下積累財富 2.商業投資:為企業家和企業提供投資生產性活動的資源 目標:跨越時間和…

【筆記】NVIDIA AI Workbench 安裝記錄

前言 NVIDIA AI Workbench 簡介 NVIDIA AI Workbench 是一款由 NVIDIA 推出的集成化開發工具,旨在簡化人工智能和機器學習的開發流程。它提供從數據準備到模型訓練、優化及部署的全套工具鏈,支持跨平臺協作,適合開發者、數據科學家和企業團隊…

積累-Vue.js 開發實用指南:ElementUI 與核心技巧

一、ElementUI 組件高效使用 1. Table 組件展開行優化實現 場景需求:僅在展開行時動態加載數據,避免不必要的接口調用 實現方案: // expand行展開的時候調用expandOpen: async (row, expandedRows) > {// 實時更新展開列const index e…

【BUG】記STM32F030多通道ADC DMA讀取亂序問題

STM32F0多通道ADC的校準順序與DMA亂序問題的本質 聲明:本段轉載:https://www.cnblogs.com/chihirosan/p/5458673.html 問題描述 通過 uint16_t ConvData[8]保存DMA搬運的ADC轉換數值,但是這個數組數值的順序總是和ADC不是順序對應的。比如用7…

Java - Mysql數據類型對應

Mysql數據類型java數據類型備注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮點型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定長度字符串VARCHARjava.lang…

今天刷SQL

多說幾句,JAVA真不行了? 剛剛看到那個tiobe最新的指數,JAVA只剩下8.84%?感覺上次看的時候還有百分之十呢。 185-department-top-three-salaries https://leetcode.com/problems/department-top-three-salaries/description/ 公…

【SQL學習筆記1】增刪改查+多表連接全解析(內附SQL免費在線練習工具)

可以使用Sqliteviz這個網站免費編寫sql語句,它能夠讓用戶直接在瀏覽器內練習SQL的語法,不需要安裝任何軟件。 鏈接如下: sqliteviz 注意: 在轉寫SQL語法時,關鍵字之間有一個特定的順序,這個順序會影響到…

【計算機網絡】SDN

SDN這種新型網絡體系結構的核心思想:把網絡的控制層面與數據層面分離,而讓控制層面利用軟件來控制數據層面中的許多設備。 OpenFlow協議可以被看成是SDN體系結構中控制層面與數據層面之間的通信接口。 在SDN中取代傳統路由器中轉發表的是“流表”&…

量化面試綠皮書:9. 通往Offer的門

文中內容僅限技術學習與代碼實踐參考,市場存在不確定性,技術分析需謹慎驗證,不構成任何投資建議。 9. 通往Offer的門 你面對著兩扇門。 一個通往你的工作機會,另一個是退出。 兩扇門前都有一名警衛。一個守衛總是說謊&#xff0c…

【雜談】-遞歸進化:人工智能的自我改進與監管挑戰

遞歸進化:人工智能的自我改進與監管挑戰 文章目錄 遞歸進化:人工智能的自我改進與監管挑戰1、自我改進型人工智能的崛起2、人工智能如何挑戰人類監管?3、確保人工智能受控的策略4、人類在人工智能發展中的角色5、平衡自主性與控制力6、總結與…

Ascend NPU上適配Step1X-Edit模型

1 概述 1.1 簡述 Step1X-Edit:一個在各種真實用戶指令下表現出現的統一圖像編輯模型。 Step1X-Edit,其性能可與 GPT-4o 和 Gemini2 Flash 等閉源模型相媲美。更具體地說,我們采用了多模態LLM 來處理參考圖像和用戶的編輯指令。我們提取了潛…

WEB3全棧開發——面試專業技能點P8DevOps / 區塊鏈部署

一、Hardhat / Foundry 進行合約部署 概念介紹 Hardhat 和 Foundry 都是以太坊智能合約開發的工具套件,支持合約的編譯、測試和部署。 它們允許開發者在本地或測試網絡快速開發智能合約,并部署到鏈上(測試網或主網)。 部署過程…