首页 > 解决方案 > 神经网络返回类而不是概率

问题描述

我有一个维度为 25000 的 70k 数据的列表,我试图将其输入神经网络以获得 20 种不同事物的分类。在我做任何事情之前系统内存不足。所以我提出了这个想法。所以我将一组特征分成 5 5000 个。然后我将 5 个维度为 5000 的数据中的每一个都输入到神经网络中。那么预测的结果就是5个的平均值。

这是我分离数据的方法:

datas_feature1=datas[:,0:5000]
datas_feature2=datas[:,5000:10000]
datas_feature3=datas[:,10000:15000]
datas_feature4=datas[:,15000:20000]
datas_feature5=datas[:,20000:25000]

然后我将它们中的每一个都输入一个神经网络:

model1 = Sequential()
model1.add(layers.Dense(300, activation = "relu", input_shape=(5000,)))
# Hidden - Layers
model1.add(layers.Dropout(0.4, noise_shape=None, seed=None))
model1.add(layers.Dense(20, activation = "softmax"))
model1.summary()

model1.compile(loss="categorical_crossentropy",
              optimizer="adam",
              metrics=['accuracy'])
model1.fit( np.array(vectorized_training1), np.array(y_train_neralnettr),
          batch_size=2000,
          epochs=10,
          verbose=1,
          validation_data=(np.array(vectorized_validation1), np.array(y_validation_neralnet)))
predict1= model1.predict(np.array(vectorized_validation1))

对于在 feature2 数据集等上训练的 model2 神经网络,我有相同的代码。最后,我取了预测的平均值。

这是我的问题:神经网络的预测给出了一个基本向量而不是概率。因此,取预测的平均值将返回一个 1 和 0 的向量。我该如何改变才能真正获得成为每个预测的 20 个类别之一的概率?

我的方法好用吗?

你能给我一些参考吗?

标签: pythonneural-network

解决方案


推荐阅读