Tensorflow2.0之文本分类确定文章译者

项目说明

我们将使用相同作品(荷马的伊利亚特)三个不同版本的英文翻译,然后训练一个模型来通过单行文本确定译者。

三个版本的译者分别是 William Cowper、Edward, Earl of Derby 以及 Samuel Butler。

代码实现

1、加载数据集

请参考Tensorflow2.0加载和预处理数据的方法汇总中的第七部分:导入文本(用于文本分类)。

2、建立模型

model = tf.keras.Sequential()
model.add(tf.keras.layers.Embedding(vocab_size, 64))
model.add(tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64)))
# 一个或多个紧密连接的层
# 编辑 `for` 行的列表去检测层的大小
for units in [64, 64]:
  model.add(tf.keras.layers.Dense(units, activation='relu'))

# 输出层。第一个参数是标签个数。
model.add(tf.keras.layers.Dense(3, activation='softmax'))
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

3、训练模型

model.fit(train_data, epochs=3, validation_data=test_data)
Epoch 1/3
697/697 [==============================] - 26s 38ms/step - loss: 0.5212 - accuracy: 0.7495 - val_loss: 0.3996 - val_accuracy: 0.8162
Epoch 2/3
697/697 [==============================] - 22s 31ms/step - loss: 0.2982 - accuracy: 0.8700 - val_loss: 0.4038 - val_accuracy: 0.8204
Epoch 3/3
697/697 [==============================] - 23s 33ms/step - loss: 0.2288 - accuracy: 0.9010 - val_loss: 0.4032 - val_accuracy: 0.8266

<tensorflow.python.keras.callbacks.History at 0x7f77c058cb00>

4、测试模型

eval_loss, eval_acc = model.evaluate(test_data)

print('\nEval loss: {}, Eval accuracy: {}'.format(eval_loss, eval_acc))
     79/Unknown - 3s 35ms/step - loss: 0.4032 - accuracy: 0.8266
Eval loss: 0.40319899082938326, Eval accuracy: 0.8266000151634216

你可能感兴趣的:(tensorflow,深度学习)