Python 为什么我会得到一条几乎是直线的模型精度曲线?
我已经在列车和测试数据中绘制了我的模型精度曲线,我得到了下面的曲线,它看起来很不寻常。这条曲线表示什么?是过盈还是过盈?谁能帮帮我,我哪里出了问题? 我正在处理数据集。我有871个样本,我使用了cc400细分,生成了76636个特征 我在下面提供了代码片段: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
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%的随机猜测差。您可能使用了错误的任务模型。