Python Keras训练的准确度只有一点点变化,几次之后总是一样的

Python Keras训练的准确度只有一点点变化,几次之后总是一样的,python,tensorflow,keras,lstm,recurrent-neural-network,Python,Tensorflow,Keras,Lstm,Recurrent Neural Network,我试着训练一个模型,它能检测出是否有人跌倒。我有一个包含加速度计和陀螺仪x,y,z数据的数据集。它有多种类型的人类活动,以及多种类型的瀑布。我把它简化为秋季或非秋季数据,所以我不关心它实际上是什么类型的活动。当我尝试对模型进行降雨时,val_精度和精度实际上并没有改变。奇怪的是,在第一个时代,精确度已经很高了。我能做什么,还是我错过了什么?也许我的数据集不适合训练 这是我的模型: model4 = Sequential() optimizer = keras.optimizers.Adam()

我试着训练一个模型,它能检测出是否有人跌倒。我有一个包含加速度计和陀螺仪x,y,z数据的数据集。它有多种类型的人类活动,以及多种类型的瀑布。我把它简化为秋季或非秋季数据,所以我不关心它实际上是什么类型的活动。当我尝试对模型进行降雨时,val_精度和精度实际上并没有改变。奇怪的是,在第一个时代,精确度已经很高了。我能做什么,还是我错过了什么?也许我的数据集不适合训练

这是我的模型:

model4 = Sequential()
optimizer = keras.optimizers.Adam()
model4.add(LSTM(units=100, input_shape=(1000, 6), kernel_initializer='normal'))
model4.add(Dense(2, activation='sigmoid'))
model4.compile(loss=keras.losses.CategoricalCrossentropy(), optimizer=keras.optimizers.Adam(learning_rate=1e-4), metrics=['accuracy'])

history = model4.fit(train_set, train_labels_int, epochs=100, batch_size=100, validation_split=0.1, callbacks=[early_stopping])
_, accuracy = model4.evaluate(train_set, train_labels_int, batch_size=200)

print(accuracy)
以下是几个时代:

Epoch 1/100
81/81 [==============================] - 4s 52ms/step - loss: 0.6623 - accuracy: 0.6632 - val_loss: 0.6074 - val_accuracy: 0.7833
Epoch 2/100
81/81 [==============================] - 4s 47ms/step - loss: 0.4808 - accuracy: 0.8209 - val_loss: 0.4284 - val_accuracy: 0.8489
Epoch 3/100
81/81 [==============================] - 4s 47ms/step - loss: 0.4429 - accuracy: 0.8391 - val_loss: 0.4268 - val_accuracy: 0.8489
Epoch 4/100
81/81 [==============================] - 4s 47ms/step - loss: 0.4412 - accuracy: 0.8391 - val_loss: 0.4270 - val_accuracy: 0.8489
Epoch 5/100
81/81 [==============================] - 4s 48ms/step - loss: 0.4409 - accuracy: 0.8391 - val_loss: 0.4259 - val_accuracy: 0.8489
Epoch 6/100
81/81 [==============================] - 4s 47ms/step - loss: 0.4403 - accuracy: 0.8391 - val_loss: 0.4253 - val_accuracy: 0.8489
Epoch 7/100
81/81 [==============================] - 4s 47ms/step - loss: 0.4402 - accuracy: 0.8391 - val_loss: 0.4258 - val_accuracy: 0.8489
Epoch 8/100
81/81 [==============================] - 4s 48ms/step - loss: 0.4399 - accuracy: 0.8391 - val_loss: 0.4256 - val_accuracy: 0.8489
Epoch 9/100
81/81 [==============================] - 4s 47ms/step - loss: 0.4397 - accuracy: 0.8391 - val_loss: 0.4267 - val_accuracy: 0.8489
Epoch 10/100
81/81 [==============================] - 4s 47ms/step - loss: 0.4394 - accuracy: 0.8391 - val_loss: 0.4276 - val_accuracy: 0.8489
Epoch 11/100
81/81 [==============================] - 4s 48ms/step - loss: 0.4392 - accuracy: 0.8391 - val_loss: 0.4265 - val_accuracy: 0.8489
45/45 [==============================] - 1s 20ms/step - loss: 0.4370 - accuracy: 0.8401
0.8401111364364624
我尝试了多种模型,但结果总是val_精度=0.8489。 数据集有一个形状(90001000,6),因为我有9000个事件,时间步长是1000,即记录5秒,每个时间步长有3个加速度和3个陀螺仪值。
我正在使用StandardScaler对数据进行规范化,但如果不进行规范化,结果是相同的。

您遇到的现象称为
拟合不足。当您的培训数据质量不足,或者您的网络体系结构太小和/或无法了解问题时,就会发生这种情况


尝试对输入数据进行规范化,并尝试不同的网络架构、学习速率和激活功能。

我认为原始数据集很好,但我真的不知道如何使用它。它有1789次瀑布,每天约2700次活动测量,但并非所有的长度都相同。有些数据是100秒长,有些只有12秒长,所以你有什么好的建议如何用这种数据集训练模型?我的意思是,有没有可能,向模型中添加不同形状的数据,从中学习?我在这方面真的是新手,所以我真的不知道如何准备我的数据。非常感谢。如果您使用两个输出神经元进行二元分类,您应该在输出端使用softmax激活,而不是sigmoid