我的训练数据始终保持60%的准确度,但是当我尝试用我的测试数据预测结果时,模型的准确度约为50%(如果是随机的,这是可以预期的)。
def train_model(training_data, training_differential, test_data,
test_differential):
num_nodes = 180
model = keras.Sequential([
keras.layers.Flatten(input_shape=(12, 22)),
keras.layers.Dense(num_nodes, activation="relu"),
keras.layers.Dense(2, activation="softmax")
])
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(training_data, training_differential, epochs=20)
predictions = model.predict(test_data)
return predictions
不确定我是否过度拟合数据或使用的模型不正确。任何帮助将不胜感激!
答案 0 :(得分:0)
这可能是很多事情,要输入什么样的数据,您的目标类型是什么?它们是像[0,1]
还是整数[6,2]
之类的类。如果它们是类,那么您可能不需要稀疏的分类交叉熵,而只需分类交叉熵。如果这是二进制分类问题,例如cat or dog
,但决不能两者都做,最后一层的大小应为1,目标是单个矢量,其中每个值均为1或0。
您的训练量有多大?如果太小,过度拟合很可能是一个问题。
无论从哪个地方开始,都可能要减少节点数量,从而减少网络本身的容量。您也可以引入某种形式的正则化,以防止网络过度适合训练集。