CNN输入层数据维度问题?
为社么加了输入数据一维还是报错
import numpy as npimport librosa
import soundfile
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
from keras.optimizer_v1 import Adam
import tensorflow as tf
def load_audio_data(file_path):
audio, sample_rate = librosa.load(file_path, res_type='kaiser_fast')
mfccs = librosa.feature.mfcc(y=audio, sr=sample_rate, n_mfcc=40)
mfccs_processed = np.mean(mfccs.T,axis=0)
return mfccs_processed
#CNN
def build_model():
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(40, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='linear')) # 输出层
model.compile(loss='mean_squared_error', optimizer=Adam())
return model
# 训练模型
def train_model(model, X_train, y_train):
model.fit(X_train,y_train,batch_size=128, epochs=10)
audiopath="E:\BaiduNetdiskDownload\yy\kel.wav"
audiodata=load_audio_data(audiopath)
X_train = np.array([audiodata])# 这里只使用一段音频作为训练数据,实际应用中需要更多数据
print(X_train)
X_train= tf.expand_dims(X_train, axis=-1)
y_train =1
# 构建并训练模型
model = build_model()
train_model(model, X_train, y_train)
回答:
conv2d 需要至少 4 维,这里加了一维后也还不够
以上是 CNN输入层数据维度问题? 的全部内容, 来源链接: utcz.com/p/939049.html