Python 神经网络有时只能预测一个标签
我正在用python中的keras训练一个神经网络,以预测两个给定的短语是否是彼此的意译,但我得到了一些非常奇怪的行为 当我运行类似这样的程序(半伪代码)时: 我不改变任何输入参数,只对神经网络进行多次训练和评估。现在当我看测试集的预测时,大多数时候它只预测一个类。有时,虽然它预测了两个类(正如它应该的那样)。我对这种行为感到非常困惑,因为我没有改变任何输入参数,仍然会得到如此高的波动。数据集大致平衡,大约60%的实例具有标签1,其余实例具有标签0。该数据集大约有10k个实例。有人能解释这种奇怪的行为吗 编辑:我将尝试包含更多信息。 这是我用来训练神经网络和分类测试集的方法Python 神经网络有时只能预测一个标签,python,neural-network,keras,Python,Neural Network,Keras,我正在用python中的keras训练一个神经网络,以预测两个给定的短语是否是彼此的意译,但我得到了一些非常奇怪的行为 当我运行类似这样的程序(半伪代码)时: 我不改变任何输入参数,只对神经网络进行多次训练和评估。现在当我看测试集的预测时,大多数时候它只预测一个类。有时,虽然它预测了两个类(正如它应该的那样)。我对这种行为感到非常困惑,因为我没有改变任何输入参数,仍然会得到如此高的波动。数据集大致平衡,大约60%的实例具有标签1,其余实例具有标签0。该数据集大约有10k个实例。有人能解释这种奇怪
def classify(feature_selection, test_size, feature_file_name):
features, labels = parse(feature_file_name)
X_train,
X_test,
y_train,
y_test = get_features(features, labels, feature_selection, test_size)
num_features = len(feature_selection)
num_epochs = math.floor(len(X_train)/20)
model = Sequential()
model.add(Dense(num_features, input_dim=num_features, init='uniform', activation='relu'))
model.add(Dense(3, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=num_epochs, batch_size=20, verbose=0)
#loss and accuracy
score = model.evaluate(X_test, y_test)
predictions = model.predict(X_train)
rounded = [round(x[0]) for x in predictions]
return model, score, rounded
输入特征是数字的。打印X_train给了我类似的东西:
[[0.2041 1. 0.0909 0.1667 0.]
....
[0.1 1. 0. 0.6972 0.]]
对于numpy.shape(X_train),我得到了(9800,5)我们需要更多地了解您的网络,才能告诉您任何有用的信息。问题是我使用的是一个相当大的体系结构,无法将所有代码都放在这里。我希望有人知道这是一个普遍的问题。可能有十几个可能的问题,我们不能在不了解您的NN和数据的详细信息的情况下缩小范围
[[0.2041 1. 0.0909 0.1667 0.]
....
[0.1 1. 0. 0.6972 0.]]