【问题标题】:MLP for speech recognition用于语音识别的 MLP
【发布时间】:2021-08-13 11:16:24
【问题描述】:

我正在尝试学习语音识别,因此我正在使用一个简单的 MLP 作为初学者。

下面是代码:

#Simple MLP model

num_labels = Y.shape[1]
filter_size = 2

# Construct model 
model = Sequential()

model.add(Dense(256, input_shape=(32,)))
model.add(Activation('relu'))
model.add(Dropout(0.5))

model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.5))

model.add(Dense(num_labels))
model.add(Activation('softmax'))

# Compile the model
model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='adam')

# Display model architecture summary 
model.summary()

# Calculate pre-training accuracy 

score = model.evaluate(X_test, Y_test, verbose=2)
accuracy = 100*score[1]

print("Pre-training accuracy: %.4f%%" % accuracy)

我使用 MFCC 进行特征提取,使用 MLB 进行 one-hot 编码。

X_train、X_val、X_test、Y_train、Y_val和Y_test的形状如下: (54296, 99, 32) (6787, 99, 32) (6788, 99, 32) (54296, 31) (6787, 31) (6788, 31)

我收到以下错误:

  1. 警告:tensorflow:Model 是用形状 (None, 32) 构建的输入 Tensor("dense_21_input:0", shape=(None, 32), dtype=float32),但它是在形状不兼容的输入上调用的(无、99、32)。

当我将 input_shape 更改为 (99,32,) 时,警告消失。谁能解释一下原因?

  1. ValueError: Shapes (None, 31) 和 (None, 99, 31) 不兼容(这是我尝试计算预训练准确度的时候)

我不知道如何处理这个错误?

我期待得到一些帮助。

谢谢!

【问题讨论】:

    标签: python tensorflow speech-recognition mlp


    【解决方案1】:

    在这一行 model.add(Dense(256, input_shape=(32,))) 中,您将输入形状定义为 (32, ),这意味着形状将采用 (batch_size, 32) 的形式,但实际情况并非如此,因为您的输入是(batch_size, 99, 32) 的形状,这就是你需要这样的规范的原因:input_shape = (99, 32, )

    关于预训练精度部分,我不太确定,因为您提到 X_test 的形状为(6788, 99, 32),最后一个维度为 32,而您的 Y_test 的形状为(6788, 31),最后一个维度为31.
    这不完全加起来,代码中的错误是Shapes (None, 31) and (None, 99, 31)(None, 99, 31)part 与前面提到的形状不一致。

    【讨论】:

    • 谢谢阿尤什!即使我不确定为什么会出现不一致的形状错误?
    • 很难说,因为你声称输入形状是 (99,31) 而你的输出是 (99,32) :/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2017-10-13
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多