我无法理解为什么我的验证精度非常高;约98%。仅在经过5个时间段后,此值;从下面的屏幕截图中可以看到,我的火车精度正在缓慢提高。
我的数据是一个大小合适的np浮点数组,代表9秒的.WAV文件。
这是我的变量浏览器
这是我的模型的样子。如您所见,为减少过度拟合(在此之前非常糟糕-99%的训练acc和26%的验证),我添加了60%的退出层;这使我获得了最高的验证准确性。
models = models.Sequential()
models.add(layers.Dense(20,activation = keras.layers.LeakyReLU(alpha=0.3)))
models.add(layers.Dense(4,activation = 'relu'))
models.add(layers.Dropout(.6))
models.add(layers.Dense(6,activation = 'relu'))
models.add(layers.Dense(80,activation = 'relu'))
models.add(layers.Dense(4, activation='softmax'))
models.compile(optimizer ='nadam',
loss='categorical_crossentropy',
metrics=['acc'])
history = models.fit(train_data, train_labels,
epochs=5,
batch_size= 2000,
validation_data=(test_data, test_labels))
即使在重新整理我的数据之后,这种高精度也是如此,如下所示。
data = np.column_stack((X,Y))
np.random.shuffle(data)
train_data = data[0:515,0:396900]
train_labels = data[0:515,396900:396904]
test_data = data[515:585,0:396900]
test_labels = data[515:585,396900:396904]
(修复了数据混排,谢谢)
可以肯定的是,我并不是在抱怨这种高准确性,我只是觉得这是错误或测量错误值的结果/计算错误准确性的keras。
答案 0 :(得分:1)
我很确定这是关于对数据进行混洗。
请注意,在您的最后一个片段中,您并没有仅对X
数组进行混排训练和测试数据(Y
和data
)。
要训练混排的数据,您应该:
train_data = data[0:515,0]
train_labels = data[0:515,1]
test_data = data[515:586,0]
test_labels = data[515:586,1]