如何在神经网络中获得新条目值的类别预测?

问题描述 投票:0回答:1

我是神经网络模型构建的新手!我正在使用神经网络进行多类文本分类。

我已完成的步骤:

1.数据清理
2.Keras - 输入数据的文本向量化
3.标签数据的虚拟值

我已经建立了这样的模型:

model = tf.keras.Sequential([
  layers.Embedding(max_features + 1, embedding_dim),
  layers.Dropout(0.2),
  layers.GlobalAveragePooling1D(),
  layers.Dropout(0.2),
  layers.Dense(10)])

model.summary()

model.compile(loss=losses.BinaryCrossentropy(from_logits=True),
              optimizer='adam',
              metrics=tf.metrics.BinaryAccuracy(threshold=0.0))

epochs = 10
history = model.fit(X_train,Y_train , validation_data=(X_test , Y_test), epochs=epochs)

我得到了 90 的准确度,但问题是当我想用单个文本样本进行测试时,我得到了一个像这样的值数组 [-1.975121 , -2.8071122, -2.183652 , ..., -2.3590472, -2.214075 , -1.9891262],但是在这些中我应该选择哪一个?

以及如何做??

python machine-learning keras neural-network
1个回答
0
投票

我将根据您的模型形状layers.Dense(10))猜测

您有 10 个类别需要分类。在这种情况下,当您执行 
model.predict
操作时,您将获得一个形状为
(10,)
的数组,其中每个元素对应于一个类。

得分最高的指数是模型分类的类别。您可以通过以下方式获取:

import numpy as np
predicted_class = np.argmax(<your_models_prediction_array>)

此外,考虑到这是一个多类分类任务,您应该更改

model.compile
以匹配 >2(非二元)分类任务:

model.compile(loss='categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
© www.soinside.com 2019 - 2024. All rights reserved.