【问题标题】:python lstm layer variable input lengthpython lstm层可变输入长度
【发布时间】:2021-04-02 12:38:43
【问题描述】:

我正在研究语音情感识别我有不同长度的文件我提取梅尔谱图作为我的 x 变量你知道梅尔谱图根据文件长度而变化

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_3 层的输入 0 与该层不兼容::预期 min_ndim=3,发现 ndim=2。收到的完整形状:(无,100) 它可以用具有固定输入的 cnn 层替换第一个 lstm 层,但我希望有一个灵活的输入层用于推理我知道 0 填充是一种解决方案,但在推理期间我无法定义我的音频的最大长度

【问题讨论】:

    标签: python keras lstm speech-recognition sentiment-analysis


    【解决方案1】:

    LSTM 或一般的 RNN 从根本上无法处理不同长度的输入。这是 Transformer 架构背后的动机之一(您可能已经注意到,通过在前面添加 CNN)。

    您可能想要进行填充或应用类似转换器的架构。

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2019-01-21
      • 2019-07-10
      相关资源
      最近更新 更多