AIGC筆記--MoE模型的簡單實現

1--MoE模型

????????MoE模型全稱是混合專家模型(Mixture of Experts, MoE),其主要將多個專家神經網絡模型組合成一個更大的模型。

? ? ? ? MoE模型的核心組成有兩部分:第一部分是多個專家網絡模型,每個專家網絡模型往往是獨立的,且分別用于不同的問題;第二部分是門控網絡,用于確定使用哪些專家網絡模型,一般通過計算每個專家網絡的分數(權重)來實現。

2--簡單實例

import torch
import torch.nn as nn
import torch.nn.functional as F# 定義專家模型
class Expert(nn.Module):def __init__(self, input_size, output_size):super(Expert, self).__init__()self.fc = nn.Linear(input_size, output_size)def forward(self, x):return self.fc(x)# 定義MoE模型
class MoE(nn.Module):def __init__(self, num_experts, intput_size, output_size):super(MoE, self).__init__()# 專家模型數self.num_experts = num_experts# 初始化多個專家模型self.experts = nn.ModuleList([Expert(input_size, output_size) for _ in range(self.num_experts)])self.gating_network = nn.Linear(input_size, num_experts)def forward(self, x):# 門控網絡決定權重gating_scores = F.softmax(self.gating_network(x), dim = 1) # [Batchsize, num_experts]# 獲取每個專家網絡的輸出expert_outputs = torch.stack([expert(x) for expert in self.experts], dim = 1) # [Batchsize, num_experts, output_size]# 專家網絡的結果進行加權融合,獲取最終輸出moe_output = torch.bmm(gating_scores.unsqueeze(1), expert_outputs).squeeze(1) # [Batchsize, output_size]return moe_outputif __name__ == "__main__":# 定義測試參數input_size = 8output_size = 64num_experts = 4# 初始化MoE模型moe_model = MoE(num_experts, input_size, output_size)# 初始化輸入測試batchsize = 2input = torch.randn(batchsize, input_size)# 推理output = moe_model(input)print("output.shape: ", output.shape) # [batchsize, output_size]

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

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

相關文章

【UE+GIS】UE5GIS CAD或shp構建3D地形

貼合地形的矢量圖形實現方法 一、灰度圖的制作和拉伸換算1、基于高程點集實現2、基于等高線實現3、拉伸計算 二、生成地形模型的實現方案1、3Dmax導入灰度圖2、使用ArcMap/Arcpro/FME等GIS數據處理工具3、UE導入灰度圖 三、地形上疊加地形渲染效果的實現方案1、貼花2、數據渲染…

日志管理:Slf4j、Log4j、LogBack與ELK實戰指南

1.現代軟件開發中日志的重要性 在軟件開發和運維的世界里,日志管理是一項至關重要的技術。正確地記錄、管理和分析日志數據,能為系統的可靠性、可維護性和安全性帶來顯著的好處。 1.1 日志在故障排查中的作用 日志是系統活動的詳細記錄。當系統發生故…

Z字形變換 ---- 模擬

題目鏈接 題目: 分析: 題意如圖所示:如果我們按照題意, 真的實現一個矩陣, 這樣做的時間和空間復雜度很高, 所以我們可以試試看找規律, 優化一下我們觀察他們的下標: 如果找到下標的規律, 那么我們就不用創建矩陣, 就能找到最終結果的下一個字符是什么特殊情況, 當numRows 1…

讀AI未來進行式筆記01深度學習

1. AI 1.1. AI已經發展成一門涵蓋許多子領域的重要學科 1.2. 機器學習是迄今為止AI應用最成功的子領域 1.2.1. 在這個領域中,最大的技術突破就是深度學習 1.3. “人工智能”“機器學習”和“深度學習”的時候&#xff…

C語言編程技巧:深度挖掘與高效實踐

C語言編程技巧:深度挖掘與高效實踐 在編程的世界里,C語言以其高效、靈活和底層控制能力強等特點,一直備受開發者們的青睞。然而,要想真正掌握C語言的精髓,并編寫出高效、健壯的代碼,卻并非易事。本文將從四…

基于STM32與TB6600的機械臂項目

基于STM32與TB6600的機械臂項目是一個涉及硬件設計、軟件開發和控制算法實現的綜合項目。以下是對該項目的一個簡要介紹,以及一些基礎的代碼示例。 項目概述 1. 系統組成 STM32微控制器:作為系統的主控制器,負責處理傳感器數據和控制機械臂…

Pointnet學習以及對代碼的實現

由于點云不是常規數據格式,通常將此類數據轉換為規則的 3D 體素網格或圖像集合,然后再用神經網絡進行處理。數據表示轉換使生成的數據過于龐大。 PointNet是第一個直接處理原始點云的方法。只有全連接層和最大池化層,PointNet網絡在推理速度…

Android串口調試ADB

在Android設備上,通過串口(通常指的是ADB,即Android Debug Bridge)來執行dumpsys命令來檢查某個包(例如com.android.bluetooth)是否支持某個服務(如A2dpSinkService)是開發者或高級用…

深入理解 Python 迭代器與生成器:詳細指南

迭代器和生成器是 Python 中強大的特性,用于簡化代碼和提高效率。它們允許我們在需要時逐步計算結果,避免一次性加載所有數據到內存中。本文將詳細介紹 Python 迭代器和生成器的基本語法、命令、示例、應用場景、注意事項,并進行總結。 迭代…

Android在不同層面增加應用

1 App 應用代碼一般在開發者的項目目錄下,packages/apps/YourApp/,比如app/src/main/java目錄下 對于系統應用,源代碼可能位于packages/apps/目錄下,例如packages/apps/Settings。 用戶安裝的應用(從Google Play或其…

代碼隨想錄--哈希表--兩數之和

題目 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。 示例: 給定 nums [2, 7, 11, 15], t…

李廉洋:6.3黃金原油下周一開盤行情價格漲跌趨勢分析及最新操作建議多空布局

黃金消息面分析:上周黃金市場的走勢受到了PCE通脹數據和美聯儲政策預期的顯著影響。盡管市場對黃金的長期看漲情緒依然存在,但短期內金價的波動性預計將持續。4月份的PCE通脹數據顯示價格壓力有所降溫,這一結果與分析師預期一致,但…

2024年6月2日 (周日) 葉子游戲新聞

中醫百科中藥: 中醫百科中藥是一款非常強大的中藥知識科普軟件,該應用提供500多味中草藥的文獻資料,強大的搜索功能可根據功效、特點和關鍵詞來快速查找中藥,而且每味中藥的圖片、功效、主治、炮制方法等百科知識,可以很好的幫助你…

Pycharm SSH遠程連接時出現報錯,測試 SFTP 連接,連接到 ‘connect.westb.seetacloud.com‘ 失敗

問題由來 很離譜!今天本來打算租借AutoDL的顯卡完成一項深度學習的任務,很離譜的是同步文件夾的時候報了標題說的錯。 就很莫名奇妙,一天都在網上找解決辦法,結果都不對頭。 其他報錯 最后摸索著,在使用pycharm遠程登…

SpringBoot 定時任務+Quartz

1、分部解釋2、整體代碼 前言: 1、定時任務技術: JDK 的 Timer, 定義多個定時任務,其中某個任務出現異常,當時整個定時任務終止。Spring Task , 不支持 持久化與分布式部署,所有任務是單線程執行…

Prism 入門01,基礎

Prism 框架是支持多平臺的一種MVVM框架(Model-View-ViewModel) 除了具備一些基礎的屬性通知綁定,命令操作,消息聚合器等功能外。還具備一些強大的功能:例如,區域,導航,會話服務,模塊注入等特性。 一.如何在WPF 項目中使用Prism 框架 1.打開Visual Studio 2022,選擇創…

初探Arthasan安裝使用

最近在項目中用到 Arthas,即阿爾塞斯 是阿里開源的Java分析工具。 下載地址:Github 一、安裝運行 1)window 系統 下載 jar 包,直接通過java命令運行 // 下載 jar包 curl -O https://arthas.aliyun.com/arthas-boot.jar // 啟動…

3個常用的Python性能分析工具及其使用方法

以下是幾個常用的性能分析工具及其使用方法和常用命令: 1. cProfile cProfile是Python標準庫中的性能分析工具,可以用來統計函數的運行時間和調用次數。 使用方法: 在命令行中使用以下命令: python -m cProfile my_script.py…

【排序】選擇排序(含優化版)

本章我們繼續講排序算法,這里我們將學習選擇排序,也是一個很普遍很常見的排序算法,邏輯和代碼都比較簡單,比較容易掌握,我們直接走起 選擇排序 基本思想:選擇排序(SelectSort)&…

Layui2.5.6樹形表格TreeTable使用

1、問題概述? Layui2.5.6的樹形表格-TreeTable終于用明白了,步驟詳細,提供源碼下載。 如果你使用的是Layui2.8+版本,那么點個贊,趕緊去官網看吧,官網更行了。 更新地址:樹表組件 treeTable - Layui 文檔 最近在項目中需要使用到樹形表格,用來顯示菜單的層級關系,當…