Python 为什么我会得到一条几乎是直线的模型精度曲线?

Python 为什么我会得到一条几乎是直线的模型精度曲线?,python,keras,deep-learning,neural-network,visualization,Python,Keras,Deep Learning,Neural Network,Visualization,我已经在列车和测试数据中绘制了我的模型精度曲线,我得到了下面的曲线,它看起来很不寻常。这条曲线表示什么?是过盈还是过盈?谁能帮帮我,我哪里出了问题? 我正在处理数据集。我有871个样本,我使用了cc400细分,生成了76636个特征 我在下面提供了代码片段: import tensorflow as tf from keras.models import Sequential from keras.layers import Dense from keras.layers import Drop

我已经在列车和测试数据中绘制了我的模型精度曲线,我得到了下面的曲线,它看起来很不寻常。这条曲线表示什么?是过盈还是过盈?谁能帮帮我,我哪里出了问题? 我正在处理数据集。我有871个样本,我使用了cc400细分,生成了76636个特征

我在下面提供了代码片段:

import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
#create model
model = Sequential()

#add model layers
model.add(Dropout(0.2))
initializer_relu = tf.keras.initializers.HeUniform()
model.add(Dense(128, activation='relu', 
   kernel_initializer=initializer_relu, 
   kernel_regularizer=tf.keras.regularizers.l1(0.0001), input_shape= 
   (76636,)))
model.add(Dropout(0.2))
model.add(Dense(64, activation='relu', 
kernel_initializer=initializer_relu, 
kernel_regularizer=tf.keras.regularizers.l1(0.0001)))
model.add(Dropout(0.2))
initializer_sigmoid = tf.keras.initializers.GlorotUniform()
model.add(Dense(1, activation='sigmoid', 
kernel_initializer=initializer_sigmoid))

#compile model using mse as a measure of model performance
model.compile(optimizer='adam', loss='binary_crossentropy', 
metrics='accuracy')

from keras.callbacks import EarlyStopping
early_stopping_monitor = EarlyStopping(patience=3)
#train model
history= model.fit(X_train, y_train, validation_data=(X_test, y_test), 
batch_size=64 , epochs=20, callbacks=[early_stopping_monitor])

import matplotlib.pyplot as plt
print(history.history.keys())
# summarize history for accuracy
plt.plot(history.history[ 'accuracy' ])
plt.plot(history.history[ 'val_accuracy' ])
plt.title( 'model accuracy' )
plt.ylabel( 'accuracy' )
plt.xlabel( 'epoch' )
plt.legend([ 'train' , 'test' ], loc= 'lower right' )
plt.show()

直线精度的原因是模型无法在20个时代内学习。因为不同的特征没有相似的值范围,因此梯度最终可能需要很长时间,并且可能来回振荡,需要很长时间才能最终找到全局/局部最小值。为了克服模型学习问题,我们对数据进行了规范化。我们确保不同的功能具有相似的值范围,以便梯度下降可以更快地收敛

没有人可以通过一个绘图告诉你任何事情,你需要添加相关信息,特别是代码抱歉,我编辑了这篇文章。你的模型拟合不足,性能比50%的随机猜测差。您可能使用了错误的任务模型。