神经网络中间层特征图可视化(输入为音频)

复制代码
import librosa
import numpy as np
import utils
import torch
import torch.nn.functional as F
from matplotlib import pyplot as plt
from torchvision.models.feature_extraction import create_feature_extractor

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 sequences
    X = utils.split_in_seqs(X, seq_len)
    X = utils.split_multi_channels(X, nb_ch)
    # Convert to PyTorch tensors
    X = torch.Tensor(X)
    X = X.permute(0,1,3,2)   #x形状为[709,2,40,256],【总样本数,通道数,特征维度,像素宽度】
    return X

# 提取梅尔频谱特征
audio_path = "b093.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 为输入模型的样本特征
features = {"cnn1": '1', "cnn2": '2', "cnn3": '3', "cnn4": '4', "cnn5": '5', "cnn6": '6'}


model = torch.load(f'best_model_2.pth')
feature_extractor = create_feature_extractor(model, return_nodes=features)
out = feature_extractor(value)

layer = "3"
out = torch.cat((out[layer][0], out[layer][1]), dim=1)
out = out.unsqueeze(0)
out = F.interpolate(out, size=(470, 64), mode='bilinear', align_corners=False)
out = out.squeeze(0) .permute(2, 0, 1)   #[128, 256, 64]->[64, 128, 256]->[纵, 值, 横]
plt.imshow(out.sum(1).detach().cpu().numpy(), origin='lower')
plt.show()

参考文章:【Pytorch】六行代码实现:特征图提取与特征图可视化

相关推荐
Jialu.6 分钟前
中文 NLP 模型部署实战:FastAPI 接口 + Streamlit 看板
人工智能·python·自然语言处理·fastapi
LPCK_2026062215 分钟前
从自动化到自主化:生物制药智能体的人机边界怎么设计
大数据·人工智能·自动化
smartpi_ai16 分钟前
JL-17T 能接传感器并把数据发到小程序吗?GPIO/ADC/UART 平台可做,I2C/SPI 要二开
人工智能·小程序·语音识别
hyunbar77717 分钟前
LangChain 实战:Agnets核心组件
人工智能
Mid_search18 分钟前
高估问题、Target Network、Double DQN
人工智能·深度学习·强化学习·double dqn·bootstrapping·target network
必须会一定会19 分钟前
Agent Handoff v0.6.0 跨电脑同步:Git、EVENTS.jsonl、CONTEXT.md 使用方法
人工智能·git·ai编程
思考着亮25 分钟前
2.RAG 七种分块技术方案
人工智能
YOLO数据集集合26 分钟前
隧道病害检测数据集 | 隧道检测 裂缝识别 渗水监测 剥落检测9037期
人工智能·深度学习·yolo·隧道·裂缝检测·裂缝识别·隧道病害
87327 分钟前
在 Uber 规模下高效运行软件工厂
人工智能·架构
腾讯云开发者31 分钟前
以数字破局传统酿造,以出海拓路东方浓香 | 专访泸州老窖 CDO 苏王辉
人工智能