我对神经网络比较陌生。我正在尝试查看损失和准确性之间的区别。但是,对于精度图,列车数据和测试数据不会相互接触。这是正确的吗?
#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)
我应该对此进行哪些更改?
答案 0 :(得分:1)
以下是一些一般信息。
是的,您的测试百分比通常总是比您的训练百分比差。首次初始化网络时,您的测试和培训百分比都应该是可怕的,而且随着时间的推移两者都会越来越好。经过一段时间后,您的模型将开始“过度训练”,这意味着它会根据训练数据的各个小细节进行决策,并开始对测试数据进行更差的处理。
在您提供的图形中,“时代与损失”函数图形看起来正确,但是“模型准确性”图形看起来好像没有在绘制您认为绘制的图形。
我发现我在神经网络中花费了大量时间,只是试图掌握正在发生的事情。不只是你:)
祝你有美好的一天!
答案 1 :(得分:-2)
在不知道数据的情况下很难说是怎么回事。简而言之,您的模型似乎可以学习,但是这种学习并不能提高准确性。这很有可能。训练/测试的准确性不一定会相互影响。
您能做什么:调整模型并确保以正确的方式学习模型。尝试模型的容量,更改批次大小,也许添加正则化。还要看看如果训练更多的时期会发生什么情况。
注意:如果您的数据量很少,则神经网络的性能不会太好。在这种情况下,您可能需要求助于其他方法,也许是增强方法。