重塑从 signal.spectogram 获得的数组用于训练 CNN

时间:2021-03-18 03:41:20

标签: python tensorflow conv-neural-network numpy-ndarray spectrogram

我无法将从 signal.spectrogram 获得的数组重塑为 CNN 所需的适当输入形状(即批量大小、时间、频率、通道)。您可以在下面找到重现问题的代码,为了您的方便,我还附上了 google colab 链接。

import numpy as np
from numpy import genfromtxt
from scipy import signal

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

downloaded = drive.CreateFile({'id':'1o7iZ70FHDjc1UKkGzt7IzU_98jG4ZRp3'})
downloaded.GetContentFile('sample.csv')
data = genfromtxt('sample.csv', delimiter=',')  

spectrograms = []
for i in range(3):
  spectrograms.append(signal.spectrogram(data[i], fs=200, nperseg=50, window=('hamming'), noverlap=50//2))

print(f'{np.array(spectrograms).shape}      (batch size, features)')
print(f'{np.array(spectrograms[1][0]).shape}       Time dimension aka width')
print(f'{np.array(spectrograms[1][1]).shape}       Frequency dimension aka height')
print(f'{np.array(spectrograms[1][2]).shape}    Power density dimension aka channel')

Colab 链接:https://colab.research.google.com/drive/130xx45x2WCZ2P4pAbmxBsKyg1yQ4-rDa#scrollTo=OalMsRfJV6gy

从 signal.spectrogram 输出获得的形状在这个例子中是 (3,3)。时间、频率和通道维度嵌套在频谱图输出的最后一个轴内。

0 个答案:

没有答案