【发布时间】:2021-01-27 10:33:03
【问题描述】:
给定几个 .wav 音频文件的目录,我以 3D 数组(批处理、步骤、特征)的形式提取了它们的特征。
就我而言,训练数据集是 (1883,100,136)。 基本上,每个音频都被分析了 100 次(假设为 1fps),每次都提取了 136 个特征。但是,这些音频文件的长度不同,因此其中一些无法分析 100 次。
例如,其中一个音频有 50 组 136 个特征作为有效值,因此其余 50 组用零填充。
这是我的模型。
def LSTM_model_building(units=200,learning_rate=0.005,epochs=20,dropout=0.19,recurrent_dropout=0.2):
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Bidirectional(LSTM(units, dropout=dropout, recurrent_dropout=recurrent_dropout, input_shape=(X_train.shape[0],100, 136))))
# model.add(tf.keras.layers.Bidirectional(LSTM(32)))
model.add(Dense(num_classes, activation='softmax'))
adamopt = tf.keras.optimizers.Adam(lr=learning_rate, beta_1=0.9, beta_2=0.999, epsilon=1e-8)
opt = tf.keras.optimizers.RMSprop(lr=learning_rate, rho=0.9, epsilon=1e-6)
# opt = tf.keras.optimizers.SGD(lr=learning_rate, momentum=0.9, decay=0., nesterov=False)
model.compile(loss='categorical_crossentropy',
optimizer=adamopt,
metrics=['accuracy'])
history = model.fit(X_train, y_train,
batch_size=batch_size,
epochs=epochs,
validation_data=(X_test, y_test),
verbose = 1)
score, acc = model.evaluate(X_test, y_test,
batch_size=batch_size)
return history
我希望屏蔽填充,但是Keras website 上显示的指令使用embedding layer,我相信它通常用于 NLP。我不知道如何为我的模型使用embedding layer。
谁能教我如何为我的 LSTM 模型应用掩码?
【问题讨论】:
标签: tensorflow machine-learning keras deep-learning lstm