神經網絡中間層特征圖可視化(輸入為音頻)(二)

相比方法一個人感覺這種方法更好

import librosa
import numpy as np
import utils
import torch
import matplotlib.pyplot as pltclass Hook:def __init__(self):self.features = Nonedef hook_fn(self, module, input, output):self.features = output# 創建鉤子的實例
hook = Hook()device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
def extract_mbe(_y, _sr, _nfft, _nb_mel):#梅爾頻譜spec = librosa.core.spectrum._spectrogram(y=_y, n_fft=_nfft, hop_length=_nfft // 2, power=1)[0]mel_basis = librosa.filters.mel(sr=_sr, n_fft=_nfft, n_mels=_nb_mel)mel_spec = np.log(np.dot(mel_basis, spec).T)return mel_spec       #最后必須是[frames, dimensions]def preprocess_data(X, seq_len, nb_ch):# split into sequencesX = utils.split_in_seqs(X, seq_len)X = utils.split_multi_channels(X, nb_ch)# Convert to PyTorch tensorsX = torch.Tensor(X)X = X.permute(0,1,3,2)   #x形狀為[709,2,40,256],【總樣本數,通道數,特征維度,像素寬度】return X# 提取梅爾頻譜特征
audio_path = "a011.wav"
y, sr = librosa.load(audio_path, sr=44100)
mel = extract_mbe(y, sr, 2048, 64)value = preprocess_data(mel, 256, 1).to(device)     #value 為輸入模型的樣本特征model = torch.load(f'best_model_2.pth')# 將鉤子注冊到需要的層
model.cnn1.register_forward_hook(hook.hook_fn)# 假設`input_data`是你的輸入張量
output = model(value)# 訪問存儲的特征
retnet_features = hook.features
#print(retnet_features.shape)
# 可視化特征(假設retnet_features是一個張量)
retnet_features = retnet_features.permute(0, 2, 1, 3)
#retnet_features = retnet_features.transpose(1, 2)
#print(retnet_features.shape)
retnet_features = torch.cat([retnet_features[i] for i in range(10)], dim=2)
#print(retnet_features.shape)# 可視化批次中第一個樣本的特定通道
plt.imshow(retnet_features.sum(1).detach().cpu().numpy(), cmap='viridis', origin='lower')   #[高,通道, 寬]
# plt.imshow(retnet_features.detach().cpu().numpy(), cmap='viridis', origin='lower')   #[高,寬]
plt.show()

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

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

相關文章

EasyExcel listener無法通過Autowired注入xxMapper

easyexcel listener無法通過Autowired注入xxMapper 文章目錄 easyexcel listener無法通過Autowired注入xxMapperbug記錄:解決方案:easyexcel 使用例子controllerServiceImpllistener bug記錄: productMapper注入一直為null,而procureDetailM…

Visual Studio(VS) C++程序LNK2005錯誤,提示“error LNK2005: _XXX已經在xxx.obj中定義”解決方案

1.問題如圖 2.出現原因 項目中有多個源文件或頭文件,include后導致有些變量重復定義,加上Visual Studio新版版要求更嚴格 3.解決辦法 查詢到的解決辦法很多不好用,此處記錄解決自己問題的一個辦法:直接讓編譯器忽略第二次定義的…

圖形數據庫的實戰應用:如何在 Neo4j 中有效管理復雜關系

關系數據庫管理系統( RDBMS ) 代表了最先進的技術,這在一定程度上要歸功于其由周邊技術、工具和廣泛的專業技能組成的完善的生態系統。 在這個涵蓋信息技術(IT) 和運營技術(OT) 的技術革命時代,人們普遍認識到性能方面出現了重大挑戰,特別是…

連續變量降維:主成分分析和因子分析

主成分分析(Principal Component Analysis,PCA)和因子分析(Factor Analysis)都是用于處理連續變量降維的統計方法,它們在數據分析和特征提取中經常被使用。盡管它們有一些相似之處,但它們的目標…

初識JVM(簡單易懂),解開JVM神秘的面紗

目錄 一、什么是JVM(Java虛擬機)? 二、JVM的功能 三、JVM的功能-即時編譯 四、常見的JVM 五、JVM的組成 五、JVM的工作流程 參考資料 一、什么是JVM(Java虛擬機)? 在Java的世界里,Java虛…

代碼文檔瀏覽器 Dash mac中文版軟件特色

Dash mac是一個基于 Python 的 web 應用程序框架,它可以幫助開發者快速構建數據可視化應用。Dash 的工作原理是將 Python 代碼轉換成 HTML、CSS 和 JavaScript,從而在瀏覽器中呈現交互式的數據可視化界面。Dash 提供了一系列組件,包括圖表、表…

如何將設置為靜態IP的VMware虛擬機進行克隆以便可以復刻相應的環境

一定要關閉需要克隆的虛擬機右鍵要選擇克隆的虛擬機,選擇管理->克隆,進入克隆虛擬機向導 設定克隆出來的虛擬機名稱以及位置,選擇完成 克隆完成之后將會生成虛擬機,示例中生成的虛擬機為ubuntu-dev2 因為原本的虛擬機為靜態ip的…

區域人員超限AI算法的介紹及TSINGSEE視頻智能分析技術的行業應用

視頻AI智能分析已經滲透到人類生活及社會發展的各個方面。從生活中的人臉識別、停車場的車牌識別、工廠園區的翻越圍欄識別、入侵識別、工地的安全帽識別、車間流水線產品的品質缺陷AI檢測等,AI智能分析技術無處不在。在某些場景中,重點區域的人數統計與…

3:kotlin 邏輯控制(Control flow)

向其他語言一樣,kotlin也有循環和邏輯控制 條件判斷(Conditional expressions) kotlin使用if和when來進行條件判斷 如果糾結選擇if還是when,建議使用when,因為它更能提高程序的健壯性 if 普通寫法 fun main() {val…

Java集合拓展01

1、List,Set,Map三者的區別 List:一個有序(元素存入集合的順序和取出的順序一致)容器,元素可以重復,可以插入多個null元素,元素都有索引。常用的實現類有 ArrayList、LinkedList 和…

EMG肌肉信號處理合集 (一)

本文歸納了常見的肌肉信號預處理流程,方便EMG信號的后續分析。使用pyemgpipeline庫 來進行信號的處理。文中使用了 UC Irvine 數據庫的下肢數據。 目錄 1 使用wrappers 定義數據類,來進行后續的操作 2 肌電信號DC偏置去除 3 帶通濾波器處理 4 對肌電…

SpringCloud - 新版淘汰 Ribbon,在 OpenFeign 中整合 LoadBalancer 負載均衡

目錄 一、LoadBalancer 負載均衡 1.1、前言 1.2、LoadBalancer 負載均衡底層實現原理 二、整合 OpenFeign LoadBalancer 2.1、所需依賴 2.2、具體實現 2.3、自定義負載均衡策略 一、LoadBalancer 負載均衡 1.1、前言 在 2020 年以前的 SpringCloud 采用 Ribbon 作為負載…

OOM問題排查+Jvm優化

OOM問題排查: 1、top命令:查看cpu和內存的使用情況。 2、jstat命令:查看YGC和FGC情況,一般都是老年代不夠用。導致OOM 3、jmap命令: 查看哪個類的實例過多,以每個類占用多少了內存。4、jstack 查看線程與線程之間的阻…

Linux用戶名用戶組命令

添加用戶(為sam用戶添加一個主目錄/home/sam) useradd -d /home/sam -m sam新建一個用戶gem,該用戶的登錄shell是/bin/sh,它屬于group用戶組,同時又屬于adm和root用戶組,其中group用戶組是其主組 添加用戶賬號就是在/etc/passwd文件中為新用戶添加一條記…

80基于matlab的小波包熵與模糊C均值聚類的故障診斷,以凱斯西儲大學軸承數據為例進行分析

基于matlab的小波包熵與模糊C均值聚類的故障診斷,以凱斯西儲大學軸承數據為例進行分析。對數據進行小波包分解后重構,然后提取各頻帶能量分布,后計算小波包熵進行故障診斷。輸出特征可視化結果。數據可更換自己的,程序已調通&…

Git遠程庫操作(GitHub)

GitHub 網址:https://github.com/ 創建遠程倉庫 遠程倉庫操作 命令名稱作用git remote -v查看當前所有遠程地址別名git remote add 別名 遠程地址起別名git push 別名 分支推送本地分支上的內容到遠程倉庫git clone 遠程地址將遠程倉庫的內容克隆到本地git pull 別…

文件格式校驗

json格式校驗 非嚴格模式 json.loads(data, strictFalse) 如果strict為false(默認值為True),則字符串中允許使用控制字符。此上下文中的控制字符是那些字符代碼在0–31范圍內的字符,包括“\t”(制表符)、“…

基于STM32的色彩識別與分類算法優化

基于STM32的色彩識別與分類算法優化是一項與圖像處理和機器學習相關的研究任務,旨在實現高效的色彩識別和分類算法在STM32微控制器上的運行。本文將介紹基于STM32的色彩識別與分類算法優化的原理和實現步驟,并提供相應的代碼示例。 1. 色彩識別與分類概…

[SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering

pdf | proj | code 本文提出一種新的3D數據表達形式3D Gaussians。每個Gaussian由以下參數組成:中心點位置、協方差矩陣、可見性、顏色。通過世界坐標系到相機坐標系,再到圖像坐標系的仿射關系,可將3D Gaussian映射到相機坐標系,通…

.NET面試題2

1.請解釋一下C#中的委托(Delegate)。 委托是一種類型安全的函數指針,它可以將方法作為參數傳遞或存儲在變量中。通過委托,可以實現方法的回調、事件處理等功能。委托在C#中使用delegate關鍵字進行聲明,可以根據方法簽名…