为什么我的训练和测试精度图太奇怪了?

时间:2019-11-16 15:50:30

标签: python tensorflow keras neural-network

我对神经网络比较陌生。我正在尝试查看损失和准确性之间的区别。但是,对于精度图,列车数据和测试数据不会相互接触。这是正确的吗?

enter image description here enter image description here

 #model compile
 model.compile(optimizer='adam', loss="mse", metrics=['acc'])
 filepath = "Autopilot.h5"
 checkpoint = ModelCheckpoint(filepath, verbose=1, save_best_only=True)
 callbacks_list = [checkpoint]


 def main():
     features, labels = loadFromPickle()
     features, labels = shuffle(features, labels)
     train_x, test_x, train_y, test_y = train_test_split(features, labels, random_state=0,
                                                    test_size=0.3)
     train_x = train_x.reshape(train_x.shape[0], 100, 100, 1)
     test_x = test_x.reshape(test_x.shape[0], 100, 100, 1)
     model, callbacks_list = keras_model(100, 100)
     history = model.fit(train_x, train_y, validation_data=(test_x, test_y), epochs=30, 
     batch_size=32, callbacks=callbacks_list)

我应该对此进行哪些更改?

2 个答案:

答案 0 :(得分:1)

以下是一些一般信息。

是的,您的测试百分比通常总是比您的训练百分比差。首次初始化网络时,您的测试和培训百分比都应该是可怕的,而且随着时间的推移两者都会越来越好。经过一段时间后,您的模型将开始“过度训练”,这意味着它会根据训练数据的各个小细节进行决策,并开始对测试数据进行更差的处理。

在您提供的图形中,“时代与损失”函数图形看起来正确,但是“模型准确性”图形看起来好像没有在绘制您认为绘制的图形。

我发现我在神经网络中花费了大量时间,只是试图掌握正在发生的事情。不只是你:)

祝你有美好的一天!

答案 1 :(得分:-2)

在不知道数据的情况下很难说是怎么回事。简而言之,您的模型似乎可以学习,但是这种学习并不能提高准确性。这很有可能。训练/测试的准确性不一定会相互影响。

您能做什么:调整模型并确保以正确的方式学习模型。尝试模型的容量,更改批次大小,也许添加正则化。还要看看如果训练更多的时期会发生什么情况。

注意:如果您的数据量很少,则神经网络的性能不会太好。在这种情况下,您可能需要求助于其他方法,也许是增强方法。