python lstm层变量输入长度
我正在研究语音情感识别我有不同长度的文件我提取mel光谱图作为我的x变量正如你所知mel光谱图根据文件长度而变化python lstm层变量输入长度,python,keras,lstm,speech-recognition,sentiment-analysis,Python,Keras,Lstm,Speech Recognition,Sentiment Analysis,我正在研究语音情感识别我有不同长度的文件我提取mel光谱图作为我的x变量正如你所知mel光谱图根据文件长度而变化 model = Sequential() model.add(layers.LSTM(100, input_shape=(None,1))) model.add(Conv1D(256, 8, padding='same', activation="relu")) model.add(Conv1D(256, 8, padding='sam
model = Sequential()
model.add(layers.LSTM(100, input_shape=(None,1)))
model.add(Conv1D(256, 8, padding='same', activation="relu"))
model.add(Conv1D(256, 8, padding='same', activation="relu"))
model.add(Dropout(0.25))
model.add(MaxPooling1D(pool_size=(8)))
model.add(Conv1D(128, 8, padding='same', activation="relu"))
model.add(Conv1D(128, 8, padding='same', activation="relu"))
model.add(Conv1D(128, 8, padding='same', activation="relu"))
model.add(Conv1D(128, 8, padding='same', activation="relu"))
model.add(BatchNormalization())
model.add(MaxPooling1D(pool_size=(8)))
model.add(Conv1D(64, 8, padding='same', activation="relu"))
model.add(Conv1D(64, 8, padding='same', activation="relu"))
#model.add(Flatten())
model.add(bidirectionnel(layers.LSTM(256)))
model.add(Dense(256, activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(optimizer="Adam",
loss="binary_crossentropy",
metrics = ['accuracy'])
但是我不断地得到这个错误层conv1d\u 3的输入0与层不兼容::预期最小ndim=3,发现ndim=2。收到完整形状:(无,100)
它可以用固定输入的cnn层替换第一层lstm层,但我希望有一个灵活的输入层用于推理。我知道0填充是一个解决方案,但在推理过程中,我无法定义音频的最大长度。lstm或RNN通常无法处理不同长度的输入。这是transformer架构背后的动机之一(您可能已经注意到,在前面添加了CNN) 您可能希望进行填充或应用类似于transformer的体系结构