我是神经网络模型构建的新手!我正在使用神经网络进行多类文本分类。
我已完成的步骤:
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],但是在这些中我应该选择哪一个?
以及如何做??
我将根据您的模型形状(layers.Dense(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'])