Machine learning 是什么导致此LSTM的精度如此低?

Machine learning 是什么导致此LSTM的精度如此低?,machine-learning,keras,neural-network,lstm,recurrent-neural-network,Machine Learning,Keras,Neural Network,Lstm,Recurrent Neural Network,我正在创建一个音乐键识别算法。我有大约50000首歌。每个音轨都表示为音高列表(1到12)。因为我想将每个音高序列分类为24个类别中的一个(关键),所以我想我会将其类似于文本分类问题。我使用一层LSTM网络在线复制了一个示例。但是,准确率很低(约3%)。由于我是机器学习新手,我非常感谢任何关于如何构建适合这个问题的LSTM的直觉 #创建嵌入(输入)层(最大字数)-->LSTM层(128) 添加(嵌入(可能的注释+1,5,掩码0=True)) 模型添加(LSTM(5,辍学率=0.2,经常性辍学率=

我正在创建一个音乐键识别算法。我有大约50000首歌。每个音轨都表示为音高列表(1到12)。因为我想将每个音高序列分类为24个类别中的一个(关键),所以我想我会将其类似于文本分类问题。我使用一层LSTM网络在线复制了一个示例。但是,准确率很低(约3%)。由于我是机器学习新手,我非常感谢任何关于如何构建适合这个问题的LSTM的直觉

#创建嵌入(输入)层(最大字数)-->LSTM层(128)
添加(嵌入(可能的注释+1,5,掩码0=True))
模型添加(LSTM(5,辍学率=0.2,经常性辍学率=0.2))
#LSTM层(128)-->输出层(num_类)
添加(密集(num_类,activation='softmax'))
#增加优化方法、损失函数和优化值
model.compile(loss='classifical_crossentropy',
优化器='adam',指标=['accurity'])
#“拟合模型”(训练模型),使用训练数据(数据集的80%)
模型拟合(X\U序列、Y\U序列、批量大小=批量大小,
epochs=num_epochs,validation_data=(X_val,Y_val))
以下是我获得的输出示例:

INFO    2019-07-20 18:45:38 +0200   master-replica-0        34000/42666 [======================>.......] - ETA: 16s - loss: 76.2733 - acc: 2.9412e-05
INFO    2019-07-20 18:45:40 +0200   master-replica-0        35000/42666 [=======================>......] - ETA: 14s - loss: 76.2733 - acc: 2.8571e-05
INFO    2019-07-20 18:45:42 +0200   master-replica-0        36000/42666 [========================>.....] - ETA: 13s - loss: 76.2733 - acc: 2.7778e-05
INFO    2019-07-20 18:45:44 +0200   master-replica-0        37000/42666 [=========================>....] - ETA: 11s - loss: 76.2733 - acc: 2.7027e-05
INFO    2019-07-20 18:45:46 +0200   master-replica-0        38000/42666 [=========================>....] - ETA: 9s - loss: 76.2733 - acc: 2.6316e-05 
INFO    2019-07-20 18:45:48 +0200   master-replica-0        39000/42666 [==========================>...] - ETA: 7s - loss: 76.2733 - acc: 2.5641e-05
INFO    2019-07-20 18:45:50 +0200   master-replica-0        40000/42666 [===========================>..] - ETA: 5s - loss: 76.2733 - acc: 2.5000e-05
INFO    2019-07-20 18:45:52 +0200   master-replica-0        41000/42666 [===========================>..] - ETA: 3s - loss: 76.2733 - acc: 2.4390e-05
INFO    2019-07-20 18:45:57 +0200   master-replica-0        42000/42666 [============================>.] - ETA: 1s - loss: 76.2733 - acc: 2.3810e-05
INFO    2019-07-20 18:45:57 +0200   master-replica-0        42666/42666 [==============================] - 87s 2ms/step - loss: 76.2733 - acc: 2.3438e-05 - val_loss: 76.2733 - val_acc: 0.0000e+00
我在谷歌云平台上运行这个模型,使用基本的gpu设置

以下是我运行的命令:

gcloud ai-platform jobs submit training $JOB_NAME \
--scale-tier BASIC_GPU \
--job-dir $OUTPUT_PATH \
--module-name trainer.task \
--package-path trainer/ \
--region $REGION \
--python-version 3.5 \
--runtime-version 1.4 \
-- \
--train-file gs://dissertation-models/Data/complete_dataset.csv \
--num-epochs 3 \
--batch-size 64

我尝试过不同的批量大小和不同的历元数,总是会产生相同的损失和类似的低精度。

您只是没有在足够的历元上进行培训。50000个样本需要超过3个时代。你的LSTM网络太简单了


另外,我建议在LSTM上使用transformer模型。通常语音/语音数据的准确度更高。

您只是没有进行足够的历次培训。50000个样本需要超过3个时代。你的LSTM网络太简单了


另外,我建议在LSTM上使用transformer模型。通常语音/语音数据的准确性更高。

为什么要注释掉嵌入层?LSTM在你的环境中运行什么?@MaximeKan抱歉,我在写这个问题时无意中注释掉了嵌入层。我在谷歌云平台上运行这个模型,使用基本的gpu设置(使用特斯拉K80 gpu)。谢谢,我已经编辑了这个问题以包含这些信息。你为什么要注释掉嵌入层?LSTM在你的环境中运行什么?@MaximeKan抱歉,我在写这个问题时无意中注释掉了嵌入层。我在谷歌云平台上运行这个模型,使用基本的gpu设置(使用特斯拉K80 gpu)。谢谢,我已经编辑了这个问题以包含这些信息。谢谢!我会试试你的建议,然后回来汇报。嗨!随着年代的增加,准确度确实提高了。然而,培训和验证损失在76.2733之间没有变化。知道这是什么吗?我尝试过改变优化器的学习速度、层数、节点数、时间,尝试过SGD而不是Adam。你知道这可能是什么吗?事实上,这是一个问题,我的一个热编码,以及我没有运行模型的时间不够长。拍拍额头谢谢!非常感谢。我会试试你的建议,然后回来汇报。嗨!随着年代的增加,准确度确实提高了。然而,培训和验证损失在76.2733之间没有变化。知道这是什么吗?我尝试过改变优化器的学习速度、层数、节点数、时间,尝试过SGD而不是Adam。你知道这可能是什么吗?事实上,这是一个问题,我的一个热编码,以及我没有运行模型的时间不够长。拍拍额头谢谢!