我一直在做一个用于情绪分析的NLP项目。我有一个影评数据集。我能够成功地对数据进行预处理、矢量化和填充,但当我用数据集训练我的模型时,我的损失和验证损失保持为0。我确信我做错了什么,所以下面是代码的一些部分:
VOCAB_SIZE = 20000
EMBEDDING_DIM = 16
MAXLEN = 250
model = tf.keras.Sequential([
tf.keras.layers.Embedding(VOCAB_SIZE, EMBEDDING_DIM, input_length=MAXLEN),
tf.keras.layers.GlobalAveragePooling1D(),
tf.keras.layers.Dense(10, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')])
###
model.compile(loss='sparse_categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
###
deneme12 = model.fit(train_PAD, train_LABEL, epochs=10,
validation_data=(test_PAD, test_LABEL), verbose=2)
以下是培训过程的结果:
Epoch 1/10 1291/1291 - 10s - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 2/10 1291/1291 - 10s - loss: 0.0000e+00 - val_loss: 0.0000e+00
我想您正在进行二进制分类。因为你有1个输出神经元具有S形激活功能。
然后,您应该使用binary_crossentry作为损失函数。尝试更改:
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])